github.com/InjectiveLabs/sdk-go@v1.53.0/chain/auction/types/params.go (about) 1 package types 2 3 import ( 4 "fmt" 5 6 "cosmossdk.io/math" 7 paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" 8 ) 9 10 var _ paramtypes.ParamSet = &Params{} 11 12 // Auction params default values 13 var ( 14 // DefaultAuctionPeriod represents the number of seconds in 1 week 15 DefaultAuctionPeriod int64 = 60 * 60 * 24 * 7 16 // DefaultMinNextBidIncrementRate represents default min increment rate 0.25% 17 DefaultMinNextBidIncrementRate = math.LegacyNewDecWithPrec(25, 4) 18 ) 19 20 // Parameter keys 21 var ( 22 KeyAuctionPeriod = []byte("AuctionPeriod") 23 KeyMinNextBidIncrementRate = []byte("MinNextBidIncrementRate") 24 ) 25 26 // ParamKeyTable returns the parameter key table. 27 func ParamKeyTable() paramtypes.KeyTable { 28 return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) 29 } 30 31 // NewParams creates a new Params instance 32 func NewParams( 33 auctionPeriod int64, 34 minNextBidIncrementRate math.LegacyDec, 35 ) Params { 36 return Params{ 37 AuctionPeriod: auctionPeriod, 38 MinNextBidIncrementRate: minNextBidIncrementRate, 39 } 40 } 41 42 // ParamSetPairs returns the parameter set pairs. 43 func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { 44 return paramtypes.ParamSetPairs{ 45 paramtypes.NewParamSetPair(KeyAuctionPeriod, &p.AuctionPeriod, validateAuctionPeriodDuration), 46 paramtypes.NewParamSetPair(KeyMinNextBidIncrementRate, &p.MinNextBidIncrementRate, validateMinNextBidIncrementRate), 47 } 48 } 49 50 // DefaultParams returns a default set of parameters. 51 func DefaultParams() Params { 52 return Params{ 53 AuctionPeriod: DefaultAuctionPeriod, 54 MinNextBidIncrementRate: DefaultMinNextBidIncrementRate, 55 } 56 } 57 58 // Validate performs basic validation on auction parameters. 59 func (p Params) Validate() error { 60 if err := validateAuctionPeriodDuration(p.AuctionPeriod); err != nil { 61 return err 62 } 63 64 if err := validateMinNextBidIncrementRate(p.MinNextBidIncrementRate); err != nil { 65 return err 66 } 67 68 return nil 69 } 70 71 func validateAuctionPeriodDuration(i interface{}) error { 72 v, ok := i.(int64) 73 if !ok { 74 return fmt.Errorf("invalid parameter type: %T", i) 75 } 76 77 if v == 0 { 78 return fmt.Errorf("AuctionPeriodDuration must be positive: %d", v) 79 } 80 81 return nil 82 } 83 84 func validateMinNextBidIncrementRate(i interface{}) error { 85 v, ok := i.(math.LegacyDec) 86 if !ok { 87 return fmt.Errorf("invalid parameter type: %T", i) 88 } 89 90 if v.IsNil() { 91 return fmt.Errorf("MinNextBidIncrementRate cannot be nil") 92 } 93 94 if v.Equal(math.LegacyZeroDec()) { 95 return fmt.Errorf("MinNextBidIncrementRate must be positive: %s", v.String()) 96 } 97 98 if v.GT(math.LegacyNewDecWithPrec(2, 1)) { // > 20% 99 return fmt.Errorf("MinNextBidIncrementRate must be equal or less than 20 percent: %s", v.String()) 100 } 101 102 return nil 103 }