@@ -484,31 +484,37 @@ impl<T: Config> Pallet<T> {
484484 let mut stakers: Vec < ( T :: AccountId , T :: AccountId , u128 ) > = Vec :: new ( ) ;
485485 let mut total_alpha_value_u128: u128 = 0 ;
486486
487- for ( ( hot, cold, this_netuid) , share_u64f64) in Alpha :: < T > :: iter ( ) {
488- if this_netuid != netuid {
489- continue ;
490- }
491-
492- keys_to_remove. push ( ( hot. clone ( ) , cold. clone ( ) ) ) ;
493- if !hotkeys_seen. contains ( & hot) {
494- hotkeys_seen. push ( hot. clone ( ) ) ;
495- }
487+ let hotkeys_in_subnet: Vec < T :: AccountId > = TotalHotkeyAlpha :: < T > :: iter ( )
488+ . filter ( |( _, this_netuid, _) | * this_netuid == netuid)
489+ . map ( |( hot, _, _) | hot. clone ( ) )
490+ . collect :: < Vec < _ > > ( ) ;
491+
492+ for hot in hotkeys_in_subnet. iter ( ) {
493+ for ( ( cold, this_netuid) , share_u64f64) in Alpha :: < T > :: iter_prefix ( ( hot, ) ) {
494+ if this_netuid != netuid {
495+ continue ;
496+ }
497+ keys_to_remove. push ( ( hot. clone ( ) , cold. clone ( ) ) ) ;
498+ if !hotkeys_seen. contains ( hot) {
499+ hotkeys_seen. push ( hot. clone ( ) ) ;
500+ }
496501
497- // Primary: actual α value via share pool.
498- let pool = Self :: get_alpha_share_pool ( hot. clone ( ) , netuid) ;
499- let actual_val_u64 = pool. try_get_value ( & cold) . unwrap_or ( 0 ) ;
502+ // Primary: actual α value via share pool.
503+ let pool = Self :: get_alpha_share_pool ( hot. clone ( ) , netuid) ;
504+ let actual_val_u64 = pool. try_get_value ( & cold) . unwrap_or ( 0 ) ;
500505
501- // Fallback: if pool uninitialized, treat raw Alpha share as value.
502- let val_u64 = if actual_val_u64 == 0 {
503- share_u64f64. saturating_to_num :: < u64 > ( )
504- } else {
505- actual_val_u64
506- } ;
506+ // Fallback: if pool uninitialized, treat raw Alpha share as value.
507+ let val_u64 = if actual_val_u64 == 0 {
508+ share_u64f64. saturating_to_num :: < u64 > ( )
509+ } else {
510+ actual_val_u64
511+ } ;
507512
508- if val_u64 > 0 {
509- let val_u128 = val_u64 as u128 ;
510- total_alpha_value_u128 = total_alpha_value_u128. saturating_add ( val_u128) ;
511- stakers. push ( ( hot, cold, val_u128) ) ;
513+ if val_u64 > 0 {
514+ let val_u128 = val_u64 as u128 ;
515+ total_alpha_value_u128 = total_alpha_value_u128. saturating_add ( val_u128) ;
516+ stakers. push ( ( hot. clone ( ) , cold, val_u128) ) ;
517+ }
512518 }
513519 }
514520
0 commit comments