github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/params/types/params.go (about) 1 package types 2 3 import ( 4 "fmt" 5 "github.com/fibonacci-chain/fbc/x/common" 6 "time" 7 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params/subspace" 9 10 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 11 sdkparams "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params" 12 ) 13 14 const ( 15 QueryParams = "params" 16 ) 17 18 // ParamKeyTable returns the key declaration for parameters 19 func ParamKeyTable() sdkparams.KeyTable { 20 return sdkparams.NewKeyTable().RegisterParamSet(&Params{}) 21 } 22 23 // Params is the struct of the parameters in this module 24 type Params struct { 25 // DexList proposal params 26 // Maximum period for okb holders to deposit on a dex list proposal. Initial value: 2 days 27 MaxDepositPeriod time.Duration `json:"max_deposit_period"` 28 // Minimum deposit for a critical dex list proposal to enter voting period 29 MinDeposit sdk.SysCoins `json:"min_deposit"` 30 // Length of the critical voting period for dex list proposal 31 VotingPeriod time.Duration `json:"voting_period"` 32 // block height for dex list can not be greater than DexListMaxBlockHeight 33 MaxBlockHeight uint64 `json:"max_block_height"` 34 } 35 36 // DefaultParams returns the instance of Params with default value 37 func DefaultParams() Params { 38 minDeposit := sdk.SysCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, sdk.NewInt(100))} 39 return Params{ 40 MaxDepositPeriod: time.Hour * 24, 41 MinDeposit: minDeposit, 42 VotingPeriod: time.Hour * 72, 43 MaxBlockHeight: 100000, 44 } 45 } 46 47 func (p Params) String() string { 48 return fmt.Sprintf(` 49 MaxDepositPeriod: %s, 50 MinDeposit: %s, 51 VotingPeriod: %s, 52 MaxBlockHeight: %d, 53 `, p.MaxDepositPeriod, p.MinDeposit, p.VotingPeriod, p.MaxBlockHeight) 54 } 55 56 // TODO: to supplement the validate function for every pair of param 57 func validateParams(value interface{}) error { 58 return nil 59 } 60 61 // ParamSetPairs implements the ParamSet interface and returns all the key/value pairs 62 // pairs of auth module's parameters. 63 // nolint 64 func (p *Params) ParamSetPairs() subspace.ParamSetPairs { 65 return subspace.ParamSetPairs{ 66 {KeyMaxDepositPeriod, &p.MaxDepositPeriod, common.ValidateDurationPositive("max deposit period")}, 67 {KeyMinDeposit, &p.MinDeposit, common.ValidateSysCoins("min deposit")}, 68 {KeyVotingPeriod, &p.VotingPeriod, common.ValidateDurationPositive("voting period")}, 69 {KeyMaxBlockHeight, &p.MaxBlockHeight, common.ValidateUint64Positive("max block height")}, 70 } 71 }