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  }