params

package
v0.400.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

Package params provides a namespaced module parameter store.

There are two core components, Keeper and Subspace. Subspace is an isolated namespace for a parameter store, where keys are prefixed by pre-configured subspace names which modules provide. The Keeper has a permission to access all existing subspaces.

Subspace can be used by the individual keepers, which need a private parameter store that the other keepers cannot modify.

Basic Usage:

1. Declare constant module parameter keys and the globally unique Subspace name:

const (
	ModuleSubspace = "mymodule"
)

const (
	KeyParameter1 = "myparameter1"
	KeyParameter2 = "myparameter2"
)

2. Define parameters as proto message and define the validation functions:

message MyParams {
	int64 my_param1 = 1;
	bool my_param2 = 2;
}

func validateMyParam1(i interface{}) error {
	_, ok := i.(int64)
	if !ok {
		return fmt.Errorf("invalid parameter type: %T", i)
	}

	// validate (if necessary)...

	return nil
}

func validateMyParam2(i interface{}) error {
	_, ok := i.(bool)
	if !ok {
		return fmt.Errorf("invalid parameter type: %T", i)
	}

	// validate (if necessary)...

	return nil
}

3. Implement the params.ParamSet interface:

func (p *MyParams) ParamSetPairs() params.ParamSetPairs {
	return params.ParamSetPairs{
		params.NewParamSetPair(KeyParameter1, &p.MyParam1, validateMyParam1),
		params.NewParamSetPair(KeyParameter2, &p.MyParam2, validateMyParam2),
	}
}

func ParamKeyTable() params.KeyTable {
	return params.NewKeyTable().RegisterParamSet(&MyParams{})
}

4. Have the module accept a Subspace in the constructor and set the KeyTable (if necessary):

func NewKeeper(..., paramSpace params.Subspace, ...) Keeper {
	// set KeyTable if it has not already been set
	if !paramSpace.HasKeyTable() {
		paramSpace = paramSpace.WithKeyTable(ParamKeyTable())
	}

	return Keeper {
		// ...
		paramSpace: paramSpace,
	}
}

Now we have access to the module's parameters that are namespaced using the keys defined:

func InitGenesis(ctx sdk.Context, k Keeper, gs GenesisState) {
	// ...
	k.SetParams(ctx, gs.Params)
}

func (k Keeper) SetParams(ctx sdk.Context, params Params) {
	k.paramSpace.SetParamSet(ctx, &params)
}

func (k Keeper) GetParams(ctx sdk.Context) (params Params) {
	k.paramSpace.GetParamSet(ctx, &params)
	return params
}

func (k Keeper) MyParam1(ctx sdk.Context) (res int64) {
	k.paramSpace.Get(ctx, KeyParameter1, &res)
	return res
}

func (k Keeper) MyParam2(ctx sdk.Context) (res bool) {
	k.paramSpace.Get(ctx, KeyParameter2, &res)
	return res
}

NOTE: Any call to SetParamSet will panic or any call to Update will error if any given parameter value is invalid based on the registered value validation function.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewParamChangeProposalHandler added in v0.400.1

func NewParamChangeProposalHandler(k keeper.Keeper) govtypes.Handler

NewParamChangeProposalHandler creates a new governance Handler for a ParamChangeProposal

Types

type AppModule added in v0.400.1

type AppModule struct {
	AppModuleBasic
	// contains filtered or unexported fields
}

AppModule implements an application module for the distribution module.

func NewAppModule added in v0.400.1

func NewAppModule(k keeper.Keeper) AppModule

NewAppModule creates a new AppModule object

func (AppModule) BeginBlock added in v0.400.1

func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock)

BeginBlock performs a no-op.

func (AppModule) ConsensusVersion added in v0.400.1

func (AppModule) ConsensusVersion() uint64

ConsensusVersion implements AppModule/ConsensusVersion.

func (AppModule) EndBlock added in v0.400.1

EndBlock performs a no-op.

func (AppModule) ExportGenesis added in v0.400.1

func (am AppModule) ExportGenesis(_ sdk.Context, _ codec.JSONCodec) json.RawMessage

ExportGenesis performs a no-op.

func (AppModule) GenerateGenesisState added in v0.400.1

func (AppModule) GenerateGenesisState(simState *module.SimulationState)

GenerateGenesisState performs a no-op.

func (AppModule) InitGenesis added in v0.400.1

InitGenesis performs a no-op.

func (AppModule) LegacyQuerierHandler added in v0.400.1

func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier

LegacyQuerierHandler returns the x/params querier handler.

func (AppModule) ProposalContents added in v0.400.1

func (am AppModule) ProposalContents(simState module.SimulationState) []simtypes.WeightedProposalContent

ProposalContents returns all the params content functions used to simulate governance proposals.

func (AppModule) QuerierRoute added in v0.400.1

func (AppModule) QuerierRoute() string

QuerierRoute returns the x/param module's querier route name.

func (AppModule) RandomizedParams added in v0.400.1

func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange

RandomizedParams creates randomized distribution param changes for the simulator.

func (AppModule) RegisterInvariants added in v0.400.1

func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry)

func (AppModule) RegisterServices added in v0.400.1

func (am AppModule) RegisterServices(cfg module.Configurator)

RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries.

func (AppModule) RegisterStoreDecoder added in v0.400.1

func (AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry)

RegisterStoreDecoder doesn't register any type.

func (AppModule) Route deprecated added in v0.400.1

func (AppModule) Route() sdk.Route

Deprecated: Route returns the message routing key for the params module.

func (AppModule) WeightedOperations added in v0.400.1

func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation

WeightedOperations returns the all the gov module operations with their respective weights.

type AppModuleBasic added in v0.400.1

type AppModuleBasic struct{}

AppModuleBasic defines the basic application module used by the params module.

func (AppModuleBasic) DefaultGenesis added in v0.400.1

func (AppModuleBasic) DefaultGenesis(_ codec.JSONCodec) json.RawMessage

DefaultGenesis returns default genesis state as raw bytes for the params module.

func (AppModuleBasic) GetQueryCmd added in v0.400.1

func (AppModuleBasic) GetQueryCmd() *cobra.Command

GetQueryCmd returns no root query command for the params module.

func (AppModuleBasic) GetTxCmd added in v0.400.1

func (AppModuleBasic) GetTxCmd() *cobra.Command

GetTxCmd returns no root tx command for the params module.

func (AppModuleBasic) Name added in v0.400.1

func (AppModuleBasic) Name() string

Name returns the params module's name.

func (AppModuleBasic) RegisterGRPCGatewayRoutes added in v0.400.1

func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux)

RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the params module.

func (AppModuleBasic) RegisterInterfaces added in v0.400.1

func (am AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry)

func (AppModuleBasic) RegisterLegacyAminoCodec added in v0.400.1

func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)

RegisterLegacyAminoCodec registers the params module's types on the given LegacyAmino codec.

func (AppModuleBasic) RegisterRESTRoutes added in v0.400.1

func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router)

RegisterRESTRoutes registers the REST routes for the params module. Deprecated: RegisterRESTRoutes is deprecated.

func (AppModuleBasic) ValidateGenesis added in v0.400.1

func (AppModuleBasic) ValidateGenesis(_ codec.JSONCodec, config client.TxEncodingConfig, _ json.RawMessage) error

ValidateGenesis performs genesis state validation for the params module.

Directories

Path Synopsis
cli
migrations
v036
Package v036 is used for legacy migration scripts.
Package v036 is used for legacy migration scripts.
To prevent namespace collision between consumer modules, we define a type Subspace.
To prevent namespace collision between consumer modules, we define a type Subspace.
proposal
Package proposal is a reverse proxy.
Package proposal is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL