subspace

package
v0.0.0-...-69704c5 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2023 License: Apache-2.0, Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

To prevent namespace collision between consumer modules, we define a type Subspace. A Subspace can only be generated by the keeper, and the keeper checks the existence of the Subspace having the same name before generating the Subspace.

Consumer modules must take a Subspace (via Keeper.Subspace), not the keeper itself. This isolates each modules from the others and make them modify their respective parameters safely. Keeper can be treated as master permission for all Subspaces (via Keeper.GetSubspace), so should be passed to proper modules (ex. x/governance).

Index

Constants

View Source
const (
	// StoreKey is the string store key for the param store
	StoreKey = "params"

	// TStoreKey is the string store key for the param transient store
	TStoreKey = "transient_params"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type KeyTable

type KeyTable struct {
	// contains filtered or unexported fields
}

KeyTable subspaces appropriate type for each parameter key

func NewKeyTable

func NewKeyTable(pairs ...ParamSetPair) KeyTable

func (KeyTable) RegisterParamSet

func (t KeyTable) RegisterParamSet(ps ParamSet) KeyTable

RegisterParamSet registers multiple ParamSetPairs from a ParamSet in a KeyTable.

func (KeyTable) RegisterType

func (t KeyTable) RegisterType(psp ParamSetPair) KeyTable

RegisterType registers a single ParamSetPair (key-type pair) in a KeyTable.

type ParamSet

type ParamSet interface {
	ParamSetPairs() ParamSetPairs
}

ParamSet defines an interface for structs containing parameters for a module

type ParamSetPair

type ParamSetPair struct {
	Key         []byte
	Value       interface{}
	ValidatorFn ValueValidatorFn
}

ParamSetPair is used for associating paramsubspace key and field of param structs.

func NewParamSetPair

func NewParamSetPair(key []byte, value interface{}, vfn ValueValidatorFn) ParamSetPair

NewParamSetPair creates a new ParamSetPair instance.

type ParamSetPairs

type ParamSetPairs []ParamSetPair

ParamSetPairs Slice of KeyFieldPair

type ReadOnlySubspace

type ReadOnlySubspace struct {
	// contains filtered or unexported fields
}

Wrapper of Subspace, provides immutable functions only

func (ReadOnlySubspace) Get

func (ros ReadOnlySubspace) Get(ctx sdk.Context, key []byte, ptr interface{})

Get delegates a read-only Get call to the Subspace.

func (ReadOnlySubspace) GetRaw

func (ros ReadOnlySubspace) GetRaw(ctx sdk.Context, key []byte) []byte

GetRaw delegates a read-only GetRaw call to the Subspace.

func (ReadOnlySubspace) Has

func (ros ReadOnlySubspace) Has(ctx sdk.Context, key []byte) bool

Has delegates a read-only Has call to the Subspace.

func (ReadOnlySubspace) Modified

func (ros ReadOnlySubspace) Modified(ctx sdk.Context, key []byte) bool

Modified delegates a read-only Modified call to the Subspace.

func (ReadOnlySubspace) Name

func (ros ReadOnlySubspace) Name() string

Name delegates a read-only Name call to the Subspace.

type Subspace

type Subspace struct {
	// contains filtered or unexported fields
}

Individual parameter store for each keeper Transient store persists for a block, so we use it for recording whether the parameter has been changed or not

func NewSubspace

func NewSubspace(cdc *codec.Codec, key sdk.StoreKey, tkey sdk.StoreKey, name string) Subspace

NewSubspace constructs a store with namestore

func (Subspace) CustomKVStore

func (s Subspace) CustomKVStore(ctx sdk.Context) sdk.KVStore

Returns a KVStore identical with ctx.KVStore(s.key).Prefix()

func (Subspace) Get

func (s Subspace) Get(ctx sdk.Context, key []byte, ptr interface{})

Get queries for a parameter by key from the Subspace's KVStore and sets the value to the provided pointer. If the value does not exist, it will panic.

func (Subspace) GetIfExists

func (s Subspace) GetIfExists(ctx sdk.Context, key []byte, ptr interface{})

GetIfExists queries for a parameter by key from the Subspace's KVStore and sets the value to the provided pointer. If the value does not exist, it will perform a no-op.

func (Subspace) GetParamSet

func (s Subspace) GetParamSet(ctx sdk.Context, ps ParamSet)

GetParamSet iterates through each ParamSetPair where for each pair, it will retrieve the value and set it to the corresponding value pointer provided in the ParamSetPair by calling Subspace#Get.

func (Subspace) GetParamSetForInitGenesis

func (s Subspace) GetParamSetForInitGenesis(ctx sdk.Context, ps ParamSet, ignoreList [][]byte)

GetParamSetForInitGenesis iterates through each ParamSetPair where for each pair, it will retrieve the value and set it to the corresponding value pointer provided, ignore the target keys for additional in the ParamSetPair by calling Subspace#Get.

func (Subspace) GetRaw

func (s Subspace) GetRaw(ctx sdk.Context, key []byte) []byte

GetRaw queries for the raw values bytes for a parameter by key.

func (Subspace) Has

func (s Subspace) Has(ctx sdk.Context, key []byte) bool

Has returns if a parameter key exists or not in the Subspace's KVStore.

func (Subspace) HasKeyTable

func (s Subspace) HasKeyTable() bool

HasKeyTable returns if the Subspace has a KeyTable registered.

func (Subspace) LazyWithKeyTable

func (s Subspace) LazyWithKeyTable(table KeyTable) Subspace

func (Subspace) Modified

func (s Subspace) Modified(ctx sdk.Context, key []byte) bool

Modified returns true if the parameter key is set in the Subspace's transient KVStore.

func (Subspace) Name

func (s Subspace) Name() string

Name returns the name of the Subspace.

func (Subspace) Set

func (s Subspace) Set(ctx sdk.Context, key []byte, value interface{})

Set stores a value for given a parameter key assuming the parameter type has been registered. It will panic if the parameter type has not been registered or if the value cannot be encoded. A change record is also set in the Subspace's transient KVStore to mark the parameter as modified.

func (Subspace) SetParamSet

func (s Subspace) SetParamSet(ctx sdk.Context, ps ParamSet)

SetParamSet iterates through each ParamSetPair and sets the value with the corresponding parameter key in the Subspace's KVStore.

func (Subspace) SetParamSetForInitGenesis

func (s Subspace) SetParamSetForInitGenesis(ctx sdk.Context, ps ParamSet, ignoreList [][]byte)

SetParamSetForInitGenesis iterates through each ParamSetPair and sets the value with the corresponding parameter key in the Subspace's KVStore, ignore the target keys for additional

func (Subspace) Update

func (s Subspace) Update(ctx sdk.Context, key, value []byte) error

Update stores an updated raw value for a given parameter key assuming the parameter type has been registered. It will panic if the parameter type has not been registered or if the value cannot be encoded. An error is returned if the raw value is not compatible with the registered type for the parameter key or if the new value is invalid as determined by the registered type's validation function.

func (Subspace) Validate

func (s Subspace) Validate(ctx sdk.Context, key []byte, value interface{}) error

Validate attempts to validate a parameter value by its key. If the key is not registered or if the validation of the value fails, an error is returned.

func (Subspace) WithKeyTable

func (s Subspace) WithKeyTable(table KeyTable) Subspace

WithKeyTable initializes KeyTable and returns modified Subspace

type ValueValidatorFn

type ValueValidatorFn func(value interface{}) error

Jump to

Keyboard shortcuts

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