@@ -80,10 +80,26 @@ impl<T: Config> Pallet<T> {
80
80
log:: trace!( "hotkeys: {:?}" , & hotkeys) ;
81
81
82
82
// Access network stake as normalized vector.
83
- let ( mut total_stake, _alpha_stake, _tao_stake) : ( Vec < I64F64 > , Vec < I64F64 > , Vec < I64F64 > ) =
83
+ let ( total_stake, _alpha_stake, _tao_stake) : ( Vec < I64F64 > , Vec < I64F64 > , Vec < I64F64 > ) =
84
84
Self :: get_stake_weights_for_network ( netuid) ;
85
- inplace_normalize_64 ( & mut total_stake) ;
86
- let stake: Vec < I32F32 > = vec_fixed64_to_fixed32 ( total_stake) ;
85
+
86
+ // Get the minimum stake required.
87
+ let min_stake = Self :: get_stake_threshold ( ) ;
88
+
89
+ // Set stake of validators that doesn't meet the staking threshold to 0 as filter.
90
+ let mut filtered_stake: Vec < I64F64 > = total_stake
91
+ . iter ( )
92
+ . map ( |& s| {
93
+ if fixed64_to_u64 ( s) < min_stake {
94
+ return I64F64 :: from ( 0 ) ;
95
+ }
96
+ s
97
+ } )
98
+ . collect ( ) ;
99
+ log:: debug!( "Filtered stake: {:?}" , & filtered_stake) ;
100
+
101
+ inplace_normalize_64 ( & mut filtered_stake) ;
102
+ let stake: Vec < I32F32 > = vec_fixed64_to_fixed32 ( filtered_stake) ;
87
103
log:: trace!( "S: {:?}" , & stake) ;
88
104
89
105
// =======================
@@ -102,7 +118,8 @@ impl<T: Config> Pallet<T> {
102
118
log:: trace!( "max_allowed_validators: {:?}" , max_allowed_validators) ;
103
119
104
120
// Get new validator permits.
105
- let new_validator_permits: Vec < bool > = is_topk ( & stake, max_allowed_validators as usize ) ;
121
+ let new_validator_permits: Vec < bool > =
122
+ is_topk_nonzero ( & stake, max_allowed_validators as usize ) ;
106
123
log:: trace!( "new_validator_permits: {:?}" , new_validator_permits) ;
107
124
108
125
// ==================
@@ -470,10 +487,26 @@ impl<T: Config> Pallet<T> {
470
487
log:: debug!( "hotkeys: {:?}" , & hotkeys) ;
471
488
472
489
// Access network stake as normalized vector.
473
- let ( mut total_stake, _alpha_stake, _tao_stake) : ( Vec < I64F64 > , Vec < I64F64 > , Vec < I64F64 > ) =
490
+ let ( total_stake, _alpha_stake, _tao_stake) : ( Vec < I64F64 > , Vec < I64F64 > , Vec < I64F64 > ) =
474
491
Self :: get_stake_weights_for_network ( netuid) ;
475
- inplace_normalize_64 ( & mut total_stake) ;
476
- let stake: Vec < I32F32 > = vec_fixed64_to_fixed32 ( total_stake) ;
492
+
493
+ // Get the minimum stake required.
494
+ let min_stake = Self :: get_stake_threshold ( ) ;
495
+
496
+ // Set stake of validators that doesn't meet the staking threshold to 0 as filter.
497
+ let mut filtered_stake: Vec < I64F64 > = total_stake
498
+ . iter ( )
499
+ . map ( |& s| {
500
+ if fixed64_to_u64 ( s) < min_stake {
501
+ return I64F64 :: from ( 0 ) ;
502
+ }
503
+ s
504
+ } )
505
+ . collect ( ) ;
506
+ log:: debug!( "Filtered stake: {:?}" , & filtered_stake) ;
507
+
508
+ inplace_normalize_64 ( & mut filtered_stake) ;
509
+ let stake: Vec < I32F32 > = vec_fixed64_to_fixed32 ( filtered_stake) ;
477
510
log:: debug!( "Normalised Stake: {:?}" , & stake) ;
478
511
479
512
// =======================
@@ -492,7 +525,8 @@ impl<T: Config> Pallet<T> {
492
525
log:: trace!( "max_allowed_validators: {:?}" , max_allowed_validators) ;
493
526
494
527
// Get new validator permits.
495
- let new_validator_permits: Vec < bool > = is_topk ( & stake, max_allowed_validators as usize ) ;
528
+ let new_validator_permits: Vec < bool > =
529
+ is_topk_nonzero ( & stake, max_allowed_validators as usize ) ;
496
530
log:: trace!( "new_validator_permits: {:?}" , new_validator_permits) ;
497
531
498
532
// ==================
0 commit comments