-
Notifications
You must be signed in to change notification settings - Fork 1
/
params.go
107 lines (94 loc) · 3.08 KB
/
params.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package types
import (
fmt "fmt"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"gopkg.in/yaml.v2"
)
const (
DefaultInboundGasPrice = uint64(50000000)
DefaultMinimumRelayerFees = uint64(25000000000000000)
DefaultCleanupInterval = int64(100)
DefaultBlockedRetryInterval = int64(355)
DefaultBlockedExpiryInterval = int64(3550)
)
var (
KeyInboundGasPrice = []byte("InboundGasPrice")
KeyMinimumRelayerFees = []byte("MinimumRelayerFees")
KeyCleanupInterval = []byte("CleanupInterval")
KeyBlockedRetryInterval = []byte("BlockedRetryInterval")
KeyBlockedExpiryInterval = []byte("BlockedExpiryInterval")
)
var _ paramtypes.ParamSet = (*Params)(nil)
// ParamKeyTable the param key table for launch module
func ParamKeyTable() paramtypes.KeyTable {
return paramtypes.NewKeyTable().RegisterParamSet(&Params{})
}
// NewParams creates a new Params instance
func NewParams(
inboundGasPrice uint64,
minimumRelayerFees uint64,
cleanupInterval int64,
blockedRetryInterval int64,
blockedExpiryInterval int64,
) Params {
return Params{
InboundGasPrice: inboundGasPrice,
MinimumRelayerFees: minimumRelayerFees,
CleanupInterval: cleanupInterval,
BlockedRetryInterval: blockedRetryInterval,
BlockedExpiryInterval: blockedExpiryInterval,
}
}
// DefaultParams returns a default set of parameters
func DefaultParams() Params {
return NewParams(
DefaultInboundGasPrice,
DefaultMinimumRelayerFees,
DefaultCleanupInterval,
DefaultBlockedRetryInterval,
DefaultBlockedExpiryInterval,
)
}
// ParamSetPairs get the params.ParamSet
func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs {
return paramtypes.ParamSetPairs{
paramtypes.NewParamSetPair(KeyInboundGasPrice, &p.InboundGasPrice, validateUint64("InboundGasPrice", true)),
paramtypes.NewParamSetPair(KeyMinimumRelayerFees, &p.MinimumRelayerFees, validateUint64("MinimumRelayerFees", true)),
paramtypes.NewParamSetPair(KeyCleanupInterval, &p.CleanupInterval, validateInt64("CleanupInterval", true)),
paramtypes.NewParamSetPair(KeyBlockedRetryInterval, &p.BlockedRetryInterval, validateInt64("BlockedRetryInterval", true)),
paramtypes.NewParamSetPair(KeyBlockedExpiryInterval, &p.BlockedExpiryInterval, validateInt64("BlockedExpiryInterval", true)),
}
}
// Validate validates the set of params
func (p Params) Validate() error {
return nil
}
func validateUint64(name string, positiveOnly bool) func(interface{}) error {
return func(i interface{}) error {
v, ok := i.(uint64)
if !ok {
return fmt.Errorf("invalid parameter type: %T", i)
}
if v <= 0 && positiveOnly {
return fmt.Errorf("%s must be positive: %d", name, v)
}
return nil
}
}
func validateInt64(name string, positiveOnly bool) func(interface{}) error {
return func(i interface{}) error {
v, ok := i.(int64)
if !ok {
return fmt.Errorf("invalid parameter type: %T", i)
}
if v <= 0 && positiveOnly {
return fmt.Errorf("%s must be positive: %d", name, v)
}
return nil
}
}
// String implements the Stringer interface.
func (p Params) String() string {
out, _ := yaml.Marshal(p)
return string(out)
}