@@ -11,6 +11,7 @@ import (
1111const (
1212 DefaultSignedBlocksWindow = int64 (100 )
1313 DefaultDowntimeJailDuration = 60 * 10 * time .Second
14+ DefaultSingularityHeight = 1209600 // 42 days with 3 seconds block time
1415)
1516
1617var (
@@ -22,14 +23,15 @@ var (
2223// NewParams creates a new Params object
2324func NewParams (
2425 signedBlocksWindow int64 , minSignedPerWindow math.LegacyDec , downtimeJailDuration time.Duration ,
25- slashFractionDoubleSign , slashFractionDowntime math.LegacyDec ,
26+ slashFractionDoubleSign , slashFractionDowntime math.LegacyDec , singularityHeight uint64 ,
2627) Params {
2728 return Params {
2829 SignedBlocksWindow : signedBlocksWindow ,
2930 MinSignedPerWindow : minSignedPerWindow ,
3031 DowntimeJailDuration : downtimeJailDuration ,
3132 SlashFractionDoubleSign : slashFractionDoubleSign ,
3233 SlashFractionDowntime : slashFractionDowntime ,
34+ SingularityHeight : singularityHeight ,
3335 }
3436}
3537
@@ -41,6 +43,7 @@ func DefaultParams() Params {
4143 DefaultDowntimeJailDuration ,
4244 DefaultSlashFractionDoubleSign ,
4345 DefaultSlashFractionDowntime ,
46+ DefaultSingularityHeight ,
4447 )
4548}
4649
@@ -61,6 +64,9 @@ func (p Params) Validate() error {
6164 if err := validateSlashFractionDowntime (p .SlashFractionDowntime ); err != nil {
6265 return err
6366 }
67+ if err := validateSingularityHeight (p .SingularityHeight ); err != nil {
68+ return err
69+ }
6470 return nil
6571}
6672
@@ -146,3 +152,16 @@ func validateSlashFractionDowntime(i interface{}) error {
146152
147153 return nil
148154}
155+
156+ func validateSingularityHeight (i interface {}) error {
157+ v , ok := i .(uint64 )
158+ if ! ok {
159+ return fmt .Errorf ("invalid parameter type: %T" , i )
160+ }
161+
162+ if v == 0 {
163+ return fmt .Errorf ("singularity height must be positive: %d" , v )
164+ }
165+
166+ return nil
167+ }
0 commit comments