mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-10-31 21:18:59 +00:00 
			
		
		
		
	 23a5c7b969
			
		
	
	
		23a5c7b969
		
			
		
	
	
	
	
		
			
			* first pass at genesis and msgs * add proposal generation * add permission generation * add decoder * add invariants * add committee change proposal generator * improve committee change proposal generation * fix error formatting * update sims to v0.38 * Update x/committee/keeper/invariants.go Co-Authored-By: Denali Marsh <denali@kava.io> * Update x/committee/keeper/invariants.go Co-Authored-By: Denali Marsh <denali@kava.io> * tidy up comments * tidy up random helpers * add committee to ImportExport test * add member check to vote invariant * fix comment wording Co-authored-by: Kevin Davis <karzak@users.noreply.github.com> Co-authored-by: Denali Marsh <denali@kava.io> Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
		
			
				
	
	
		
			173 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package committee
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"math/rand"
 | |
| 
 | |
| 	"github.com/gorilla/mux"
 | |
| 	"github.com/spf13/cobra"
 | |
| 
 | |
| 	"github.com/cosmos/cosmos-sdk/client/context"
 | |
| 	"github.com/cosmos/cosmos-sdk/codec"
 | |
| 	sdk "github.com/cosmos/cosmos-sdk/types"
 | |
| 	"github.com/cosmos/cosmos-sdk/types/module"
 | |
| 	"github.com/cosmos/cosmos-sdk/x/auth"
 | |
| 	sim "github.com/cosmos/cosmos-sdk/x/simulation"
 | |
| 
 | |
| 	abci "github.com/tendermint/tendermint/abci/types"
 | |
| 
 | |
| 	"github.com/kava-labs/kava/x/committee/client/cli"
 | |
| 	"github.com/kava-labs/kava/x/committee/client/rest"
 | |
| 	"github.com/kava-labs/kava/x/committee/simulation"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	_ module.AppModule           = AppModule{}
 | |
| 	_ module.AppModuleBasic      = AppModuleBasic{}
 | |
| 	_ module.AppModuleSimulation = AppModule{}
 | |
| )
 | |
| 
 | |
| // AppModuleBasic app module basics object
 | |
| type AppModuleBasic struct{}
 | |
| 
 | |
| // Name gets the module name
 | |
| func (AppModuleBasic) Name() string {
 | |
| 	return ModuleName
 | |
| }
 | |
| 
 | |
| // RegisterCodec register module codec
 | |
| func (AppModuleBasic) RegisterCodec(cdc *codec.Codec) {
 | |
| 	RegisterCodec(cdc)
 | |
| }
 | |
| 
 | |
| // DefaultGenesis default genesis state
 | |
| func (AppModuleBasic) DefaultGenesis() json.RawMessage {
 | |
| 	return ModuleCdc.MustMarshalJSON(DefaultGenesisState())
 | |
| }
 | |
| 
 | |
| // ValidateGenesis module validate genesis
 | |
| func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error {
 | |
| 	var gs GenesisState
 | |
| 	err := ModuleCdc.UnmarshalJSON(bz, &gs)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	return gs.Validate()
 | |
| }
 | |
| 
 | |
| // RegisterRESTRoutes registers the REST routes for the module.
 | |
| func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router) {
 | |
| 	rest.RegisterRoutes(ctx, rtr)
 | |
| }
 | |
| 
 | |
| // GetTxCmd returns the root tx command for the module.
 | |
| func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command {
 | |
| 	return cli.GetTxCmd(StoreKey, cdc)
 | |
| }
 | |
| 
 | |
| // GetQueryCmd returns the root query command for the module.
 | |
| func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command {
 | |
| 	return cli.GetQueryCmd(StoreKey, cdc)
 | |
| }
 | |
| 
 | |
| //____________________________________________________________________________
 | |
| 
 | |
| // AppModule app module type
 | |
| type AppModule struct {
 | |
| 	AppModuleBasic
 | |
| 
 | |
| 	keeper        Keeper
 | |
| 	accountKeeper auth.AccountKeeper
 | |
| }
 | |
| 
 | |
| // NewAppModule creates a new AppModule object
 | |
| func NewAppModule(keeper Keeper, accountKeeper auth.AccountKeeper) AppModule {
 | |
| 	return AppModule{
 | |
| 		AppModuleBasic: AppModuleBasic{},
 | |
| 		keeper:         keeper,
 | |
| 		accountKeeper:  accountKeeper,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Name module name
 | |
| func (AppModule) Name() string {
 | |
| 	return ModuleName
 | |
| }
 | |
| 
 | |
| // RegisterInvariants register module invariants
 | |
| func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
 | |
| 	RegisterInvariants(ir, am.keeper)
 | |
| }
 | |
| 
 | |
| // Route module message route name
 | |
| func (AppModule) Route() string {
 | |
| 	return RouterKey
 | |
| }
 | |
| 
 | |
| // NewHandler module handler
 | |
| func (am AppModule) NewHandler() sdk.Handler {
 | |
| 	return NewHandler(am.keeper)
 | |
| }
 | |
| 
 | |
| // QuerierRoute module querier route name
 | |
| func (AppModule) QuerierRoute() string {
 | |
| 	return QuerierRoute
 | |
| }
 | |
| 
 | |
| // NewQuerierHandler module querier
 | |
| func (am AppModule) NewQuerierHandler() sdk.Querier {
 | |
| 	return NewQuerier(am.keeper)
 | |
| }
 | |
| 
 | |
| // InitGenesis module init-genesis
 | |
| func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate {
 | |
| 	var genesisState GenesisState
 | |
| 	ModuleCdc.MustUnmarshalJSON(data, &genesisState)
 | |
| 	InitGenesis(ctx, am.keeper, genesisState)
 | |
| 
 | |
| 	return []abci.ValidatorUpdate{}
 | |
| }
 | |
| 
 | |
| // ExportGenesis module export genesis
 | |
| func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage {
 | |
| 	gs := ExportGenesis(ctx, am.keeper)
 | |
| 	return ModuleCdc.MustMarshalJSON(gs)
 | |
| }
 | |
| 
 | |
| // BeginBlock module begin-block
 | |
| func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {
 | |
| 	BeginBlocker(ctx, req, am.keeper)
 | |
| }
 | |
| 
 | |
| // EndBlock module end-block
 | |
| func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate {
 | |
| 	return []abci.ValidatorUpdate{}
 | |
| }
 | |
| 
 | |
| //____________________________________________________________________________
 | |
| 
 | |
| // GenerateGenesisState creates a randomized GenState for the module
 | |
| func (AppModuleBasic) GenerateGenesisState(simState *module.SimulationState) {
 | |
| 	simulation.RandomizedGenState(simState)
 | |
| }
 | |
| 
 | |
| // ProposalContents returns functions that generate gov proposals for the module
 | |
| func (am AppModule) ProposalContents(simState module.SimulationState) []sim.WeightedProposalContent {
 | |
| 	return simulation.ProposalContents(am.keeper, simState.ParamChanges)
 | |
| }
 | |
| 
 | |
| // RandomizedParams returns functions that generate params for the module
 | |
| func (AppModuleBasic) RandomizedParams(r *rand.Rand) []sim.ParamChange {
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // RegisterStoreDecoder registers a decoder for the module's types
 | |
| func (AppModuleBasic) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) {
 | |
| 	sdr[StoreKey] = simulation.DecodeStore
 | |
| }
 | |
| 
 | |
| // WeightedOperations returns the module operations for use in simulations
 | |
| func (am AppModule) WeightedOperations(simState module.SimulationState) []sim.WeightedOperation {
 | |
| 	return simulation.WeightedOperations(simState.AppParams, simState.Cdc, am.accountKeeper, am.keeper, simState.Contents)
 | |
| }
 |