@@ -281,7 +281,7 @@ fn test_replace_neuron_subnet_owner_not_replaced() {
281
281
}
282
282
283
283
#[ test]
284
- fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey ( ) {
284
+ fn test_replace_neuron_subnet_owner_not_replaced_if_in_sn_owner_hotkey_map ( ) {
285
285
new_test_ext ( 1 ) . execute_with ( || {
286
286
let owner_hotkey = U256 :: from ( 123 ) ;
287
287
let owner_coldkey = U256 :: from ( 999 ) ;
@@ -335,108 +335,8 @@ fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey() {
335
335
SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & other_owner_hotkey)
336
336
. expect ( "Should be registered" ) ;
337
337
338
- // Give the owner's other hotkey some stake
339
- SubtensorModule :: increase_stake_for_hotkey_and_coldkey_on_subnet (
340
- & other_owner_hotkey,
341
- & owner_coldkey,
342
- netuid,
343
- 1000 ,
344
- ) ;
345
-
346
- SubtensorModule :: replace_neuron ( netuid, owner_uid, & additional_hotkey_2, current_block) ;
347
-
348
- // The owner's first hotkey should be replaceable; it's not the top-stake owner hotkey
349
- let still_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & owner_hotkey) ;
350
- assert_err ! ( still_uid, Error :: <Test >:: HotKeyNotRegisteredInSubNet , ) ;
351
-
352
- let new_key_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & additional_hotkey_2) ;
353
- assert_ok ! ( new_key_uid) ;
354
- } ) ;
355
- }
356
-
357
- #[ test]
358
- fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey_chk ( ) {
359
- new_test_ext ( 1 ) . execute_with ( || {
360
- let owner_hotkey = U256 :: from ( 123 ) ;
361
- let owner_coldkey = U256 :: from ( 999 ) ;
362
- let other_owner_hotkey = U256 :: from ( 456 ) ;
363
- let parent_hotkey = U256 :: from ( 4567 ) ;
364
- let parent_coldkey = U256 :: from ( 4568 ) ;
365
-
366
- let netuid = add_dynamic_network ( & owner_hotkey, & owner_coldkey) ;
367
-
368
- SubtensorModule :: set_max_registrations_per_block ( netuid, 100 ) ;
369
- SubtensorModule :: set_target_registrations_per_interval ( netuid, 100 ) ;
370
- SubnetOwner :: < Test > :: insert ( netuid, owner_coldkey) ;
371
-
372
- let owner_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & owner_hotkey)
373
- . expect ( "Owner neuron should already be registered by add_dynamic_network" ) ;
374
-
375
- // Register another hotkey for the owner
376
- register_ok_neuron ( netuid, other_owner_hotkey, owner_coldkey, 0 ) ;
377
- let other_owner_uid =
378
- SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & other_owner_hotkey)
379
- . expect ( "Should be registered" ) ;
380
-
381
- register_ok_neuron ( netuid, parent_hotkey, parent_coldkey, 3 ) ;
382
- let _uid_4: u16 = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & parent_hotkey)
383
- . expect ( "Should be registered" ) ;
384
-
385
- // Give parent key some stake
386
- SubtensorModule :: increase_stake_for_hotkey_and_coldkey_on_subnet (
387
- & parent_hotkey,
388
- & parent_coldkey,
389
- netuid,
390
- 10_000_000 ,
391
- ) ;
392
-
393
- let additional_hotkey_1 = U256 :: from ( 1000 ) ;
394
- let additional_hotkey_2 = U256 :: from ( 1001 ) ;
395
-
396
- let current_block = SubtensorModule :: get_current_block_as_u64 ( ) ;
397
- SubtensorModule :: replace_neuron ( netuid, owner_uid, & additional_hotkey_1, current_block) ;
398
-
399
- let still_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & owner_hotkey) ;
400
- assert_ok ! ( still_uid) ;
401
- assert_eq ! (
402
- still_uid. unwrap( ) ,
403
- owner_uid,
404
- "Owner's first hotkey should remain registered"
405
- ) ;
406
-
407
- let new_key_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & additional_hotkey_1) ;
408
- assert_err ! ( new_key_uid, Error :: <Test >:: HotKeyNotRegisteredInSubNet , ) ;
409
-
410
- SubtensorModule :: replace_neuron (
411
- netuid,
412
- other_owner_uid,
413
- & additional_hotkey_1,
414
- current_block,
415
- ) ;
416
- let still_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & other_owner_hotkey) ;
417
- assert_err ! ( still_uid, Error :: <Test >:: HotKeyNotRegisteredInSubNet , ) ; // Was replaced
418
-
419
- // Re-register this hotkey
420
- register_ok_neuron ( netuid, other_owner_hotkey, owner_coldkey, 0 ) ;
421
- let _other_owner_uid =
422
- SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & other_owner_hotkey)
423
- . expect ( "Should be registered" ) ;
424
-
425
- // Give the owner's other hotkey some CHK stake; Doesn't need to be much
426
- mock_set_children_no_epochs (
427
- netuid,
428
- & parent_hotkey,
429
- & [ (
430
- I64F64 :: saturating_from_num ( 0.1 )
431
- . saturating_mul ( I64F64 :: saturating_from_num ( u64:: MAX ) )
432
- . saturating_to_num :: < u64 > ( ) ,
433
- other_owner_hotkey,
434
- ) ] ,
435
- ) ;
436
- // Check stake weight of other_owner_hotkey
437
- let stake_weight =
438
- SubtensorModule :: get_stake_weights_for_hotkey_on_subnet ( & other_owner_hotkey, netuid) ;
439
- assert ! ( stake_weight. 0 > 0 ) ;
338
+ // Set this hotkey as the SubnetOwnerHotkey
339
+ SubnetOwnerHotkey :: < Test > :: insert ( netuid, other_owner_hotkey) ;
440
340
441
341
SubtensorModule :: replace_neuron ( netuid, owner_uid, & additional_hotkey_2, current_block) ;
442
342
@@ -507,7 +407,7 @@ fn test_get_neuron_to_prune_owner_not_pruned() {
507
407
}
508
408
509
409
#[ test]
510
- fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey ( ) {
410
+ fn test_get_neuron_to_prune_owner_pruned_if_not_in_sn_owner_hotkey_map ( ) {
511
411
new_test_ext ( 1 ) . execute_with ( || {
512
412
let owner_hotkey = U256 :: from ( 123 ) ;
513
413
let owner_coldkey = U256 :: from ( 999 ) ;
@@ -551,118 +451,14 @@ fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey() {
551
451
let pruned_uid = SubtensorModule :: get_neuron_to_prune ( netuid) ;
552
452
assert_eq ! ( pruned_uid, other_owner_uid, "Should prune the owner" ) ;
553
453
554
- // Give the owner's other hotkey some stake
555
- SubtensorModule :: increase_stake_for_hotkey_and_coldkey_on_subnet (
556
- & other_owner_hotkey,
557
- & owner_coldkey,
558
- netuid,
559
- 1000 ,
560
- ) ;
561
-
562
- // Reset pruning scores
563
- SubtensorModule :: set_pruning_score_for_uid ( netuid, owner_uid, 0 ) ;
564
- SubtensorModule :: set_pruning_score_for_uid ( netuid, other_owner_uid, 1 ) ;
565
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_2, 2 ) ;
566
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_3, 3 ) ;
567
-
568
- let pruned_uid = SubtensorModule :: get_neuron_to_prune ( netuid) ;
569
-
570
- // - The pruned UID must be `uid_1` (score=1).
571
- // - The owner's UID remains unpruned.
572
- assert_eq ! (
573
- pruned_uid, owner_uid,
574
- "Should prune the owner, not the top-stake owner hotkey and not the additional hotkeys"
575
- ) ;
576
- } ) ;
577
- }
578
-
579
- #[ test]
580
- fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey_chk ( ) {
581
- new_test_ext ( 1 ) . execute_with ( || {
582
- let owner_hotkey = U256 :: from ( 123 ) ;
583
- let owner_coldkey = U256 :: from ( 999 ) ;
584
- let other_owner_hotkey = U256 :: from ( 456 ) ;
585
- let parent_hotkey = U256 :: from ( 4567 ) ;
586
- let parent_coldkey = U256 :: from ( 4568 ) ;
587
-
588
- let netuid = add_dynamic_network ( & owner_hotkey, & owner_coldkey) ;
589
-
590
- SubtensorModule :: set_max_registrations_per_block ( netuid, 100 ) ;
591
- SubtensorModule :: set_target_registrations_per_interval ( netuid, 100 ) ;
592
- SubnetOwner :: < Test > :: insert ( netuid, owner_coldkey) ;
593
-
594
- let owner_uid = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & owner_hotkey)
595
- . expect ( "Owner neuron should already be registered by add_dynamic_network" ) ;
596
-
597
- // Register another hotkey for the owner
598
- register_ok_neuron ( netuid, other_owner_hotkey, owner_coldkey, 0 ) ;
599
- let other_owner_uid =
600
- SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & other_owner_hotkey)
601
- . expect ( "Should be registered" ) ;
602
-
603
- let additional_hotkey_1 = U256 :: from ( 1000 ) ;
604
- let additional_coldkey_1 = U256 :: from ( 2000 ) ;
605
-
606
- let additional_hotkey_2 = U256 :: from ( 1001 ) ;
607
- let additional_coldkey_2 = U256 :: from ( 2001 ) ;
608
-
609
- register_ok_neuron ( netuid, additional_hotkey_1, additional_coldkey_1, 1 ) ;
610
- let uid_2 = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & additional_hotkey_1)
611
- . expect ( "Should be registered" ) ;
612
-
613
- register_ok_neuron ( netuid, additional_hotkey_2, additional_coldkey_2, 2 ) ;
614
- let uid_3 = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & additional_hotkey_2)
615
- . expect ( "Should be registered" ) ;
616
-
617
- register_ok_neuron ( netuid, parent_hotkey, parent_coldkey, 3 ) ;
618
- let uid_4: u16 = SubtensorModule :: get_uid_for_net_and_hotkey ( netuid, & parent_hotkey)
619
- . expect ( "Should be registered" ) ;
620
-
621
- // Give parent key some stake
622
- SubtensorModule :: increase_stake_for_hotkey_and_coldkey_on_subnet (
623
- & parent_hotkey,
624
- & parent_coldkey,
625
- netuid,
626
- 10_000_000 ,
627
- ) ;
628
-
629
- SubtensorModule :: set_pruning_score_for_uid ( netuid, owner_uid, 0 ) ;
630
- // Other owner key has pruning score not worse than the owner's first hotkey, but worse than the additional hotkeys
631
- SubtensorModule :: set_pruning_score_for_uid ( netuid, other_owner_uid, 1 ) ;
632
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_2, 2 ) ;
633
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_3, 3 ) ;
634
-
635
- // Ensure parent key is not pruned
636
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_4, 10_000 ) ;
637
-
638
- let pruned_uid = SubtensorModule :: get_neuron_to_prune ( netuid) ;
639
- assert_eq ! (
640
- pruned_uid, other_owner_uid,
641
- "Should prune the owner's other hotkey"
642
- ) ;
643
-
644
- // Give the owner's other hotkey some CHK stake; Doesn't need to be much
645
- mock_set_children_no_epochs (
646
- netuid,
647
- & parent_hotkey,
648
- & [ (
649
- I64F64 :: saturating_from_num ( 0.1 )
650
- . saturating_mul ( I64F64 :: saturating_from_num ( u64:: MAX ) )
651
- . saturating_to_num :: < u64 > ( ) ,
652
- other_owner_hotkey,
653
- ) ] ,
654
- ) ;
655
- // Check stake weight of other_owner_hotkey
656
- let stake_weight =
657
- SubtensorModule :: get_stake_weights_for_hotkey_on_subnet ( & other_owner_hotkey, netuid) ;
658
- assert ! ( stake_weight. 0 > 0 ) ;
454
+ // Set the owner's other hotkey as the SubnetOwnerHotkey
455
+ SubnetOwnerHotkey :: < Test > :: insert ( netuid, owner_hotkey) ;
659
456
660
457
// Reset pruning scores
661
458
SubtensorModule :: set_pruning_score_for_uid ( netuid, owner_uid, 0 ) ;
662
459
SubtensorModule :: set_pruning_score_for_uid ( netuid, other_owner_uid, 1 ) ;
663
460
SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_2, 2 ) ;
664
461
SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_3, 3 ) ;
665
- SubtensorModule :: set_pruning_score_for_uid ( netuid, uid_4, 10_000 ) ;
666
462
667
463
let pruned_uid = SubtensorModule :: get_neuron_to_prune ( netuid) ;
668
464
0 commit comments