github.com/InjectiveLabs/sdk-go@v1.53.0/chain/ocr/types/params.go (about) 1 package types 2 3 import ( 4 "fmt" 5 6 sdk "github.com/cosmos/cosmos-sdk/types" 7 paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" 8 "github.com/pkg/errors" 9 ) 10 11 var _ paramtypes.ParamSet = &Params{} 12 13 // MaxNumOracles denotes number of oracles the offchain reporting protocol is designed for 14 var MaxNumOracles = 31 15 16 // Parameter keys 17 var ( 18 KeyLinkDenom = []byte("LinkDenom") 19 KeyPayoutInterval = []byte("PayoutInterval") 20 KeyModuleAdmin = []byte("ModuleAdmin") 21 ) 22 23 // ParamKeyTable returns the parameter key table. 24 func ParamKeyTable() paramtypes.KeyTable { 25 return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) 26 } 27 28 // NewParams creates a new Params instance 29 func NewParams( 30 linkDenom string, 31 payoutInterval uint64, 32 moduleAdmin sdk.AccAddress, 33 ) Params { 34 return Params{ 35 LinkDenom: linkDenom, 36 PayoutBlockInterval: payoutInterval, 37 ModuleAdmin: moduleAdmin.String(), 38 } 39 } 40 41 // ParamSetPairs returns the parameter set pairs. 42 func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { 43 return paramtypes.ParamSetPairs{ 44 paramtypes.NewParamSetPair(KeyLinkDenom, &p.LinkDenom, validateLinkDenom), 45 paramtypes.NewParamSetPair(KeyPayoutInterval, &p.PayoutBlockInterval, validatePayoutInterval), 46 paramtypes.NewParamSetPair(KeyModuleAdmin, &p.ModuleAdmin, validateModuleAdmin), 47 } 48 } 49 50 // DefaultParams returns a default set of parameters. 51 func DefaultParams() Params { 52 return Params{ 53 LinkDenom: "peggy0x514910771AF9Ca656af840dff83E8264EcF986CA", 54 PayoutBlockInterval: 100000, 55 ModuleAdmin: "", 56 } 57 } 58 59 // Validate performs basic validation on insurance parameters. 60 func (p Params) Validate() error { 61 if err := validateLinkDenom(p.LinkDenom); err != nil { 62 return err 63 } 64 65 return nil 66 } 67 68 func validateLinkDenom(i interface{}) error { 69 v, ok := i.(string) 70 if !ok { 71 return errors.Errorf("invalid parameter type: %T", i) 72 } 73 74 if v == "" { 75 return errors.Errorf("linkDenom param cannot be empty: %v", v) 76 } 77 78 return nil 79 } 80 81 func validatePayoutInterval(i interface{}) error { 82 v, ok := i.(uint64) 83 if !ok { 84 return fmt.Errorf("invalid parameter type: %T", i) 85 } 86 87 if v == 0 { 88 return fmt.Errorf("PayoutInterval must be positive: %d", v) 89 } 90 91 return nil 92 } 93 94 func validateModuleAdmin(i interface{}) error { 95 v, ok := i.(string) 96 if !ok { 97 return fmt.Errorf("invalid parameter type: %T", i) 98 } 99 100 if v == "" { 101 return nil 102 } 103 104 if _, err := sdk.AccAddressFromBech32(v); err != nil { 105 return err 106 } 107 108 return nil 109 }