@@ -255,18 +255,17 @@ pub fn check_nakamoto_empty_block_heuristics() {
255
255
}
256
256
}
257
257
258
- pub fn get_stacker_set ( http_origin : & str , cycle : u64 ) -> GetStackersResponse {
258
+ pub fn get_stacker_set ( http_origin : & str , cycle : u64 ) -> Result < GetStackersResponse , String > {
259
259
let client = reqwest:: blocking:: Client :: new ( ) ;
260
260
let path = format ! ( "{http_origin}/v3/stacker_set/{cycle}" ) ;
261
261
let res = client
262
262
. get ( & path)
263
263
. send ( )
264
264
. unwrap ( )
265
265
. json :: < serde_json:: Value > ( )
266
- . unwrap ( ) ;
266
+ . map_err ( |e| format ! ( "{e}" ) ) ? ;
267
267
info ! ( "Stacker set response: {res}" ) ;
268
- let res = serde_json:: from_value ( res) . unwrap ( ) ;
269
- res
268
+ serde_json:: from_value ( res) . map_err ( |e| format ! ( "{e}" ) )
270
269
}
271
270
272
271
pub fn get_stackerdb_slot_version (
@@ -886,19 +885,21 @@ pub fn boot_to_epoch_3(
886
885
signers. signer_keys = signer_sks. to_vec ( ) ;
887
886
}
888
887
889
- let prepare_phase_start = btc_regtest_controller
888
+ // the reward set is generally calculated in the first block of the prepare phase hence the + 1
889
+ let reward_set_calculation = btc_regtest_controller
890
890
. get_burnchain ( )
891
891
. pox_constants
892
892
. prepare_phase_start (
893
893
btc_regtest_controller. get_burnchain ( ) . first_block_height ,
894
894
reward_cycle,
895
- ) ;
895
+ )
896
+ + 1 ;
896
897
897
898
// Run until the prepare phase
898
899
run_until_burnchain_height (
899
900
btc_regtest_controller,
900
901
& blocks_processed,
901
- prepare_phase_start ,
902
+ reward_set_calculation ,
902
903
& naka_conf,
903
904
) ;
904
905
@@ -909,7 +910,11 @@ pub fn boot_to_epoch_3(
909
910
let aggregate_public_key = clarity:: vm:: Value :: buff_from ( aggregate_key)
910
911
. expect ( "Failed to serialize aggregate public key" ) ;
911
912
let signer_sks_unique: HashMap < _ , _ > = signer_sks. iter ( ) . map ( |x| ( x. to_hex ( ) , x) ) . collect ( ) ;
912
- let signer_set = get_stacker_set ( & http_origin, reward_cycle + 1 ) ;
913
+ wait_for ( 30 , || {
914
+ Ok ( get_stacker_set ( & http_origin, reward_cycle + 1 ) . is_ok ( ) )
915
+ } )
916
+ . expect ( "Timed out waiting for stacker set" ) ;
917
+ let signer_set = get_stacker_set ( & http_origin, reward_cycle + 1 ) . unwrap ( ) ;
913
918
// Vote on the aggregate public key
914
919
for signer_sk in signer_sks_unique. values ( ) {
915
920
let signer_index =
@@ -1040,19 +1045,21 @@ pub fn boot_to_pre_epoch_3_boundary(
1040
1045
signers. signer_keys = signer_sks. to_vec ( ) ;
1041
1046
}
1042
1047
1043
- let prepare_phase_start = btc_regtest_controller
1048
+ // the reward set is generally calculated in the first block of the prepare phase hence the + 1
1049
+ let reward_set_calculation = btc_regtest_controller
1044
1050
. get_burnchain ( )
1045
1051
. pox_constants
1046
1052
. prepare_phase_start (
1047
1053
btc_regtest_controller. get_burnchain ( ) . first_block_height ,
1048
1054
reward_cycle,
1049
- ) ;
1055
+ )
1056
+ + 1 ;
1050
1057
1051
1058
// Run until the prepare phase
1052
1059
run_until_burnchain_height (
1053
1060
btc_regtest_controller,
1054
1061
& blocks_processed,
1055
- prepare_phase_start ,
1062
+ reward_set_calculation ,
1056
1063
& naka_conf,
1057
1064
) ;
1058
1065
@@ -1063,7 +1070,11 @@ pub fn boot_to_pre_epoch_3_boundary(
1063
1070
let aggregate_public_key = clarity:: vm:: Value :: buff_from ( aggregate_key)
1064
1071
. expect ( "Failed to serialize aggregate public key" ) ;
1065
1072
let signer_sks_unique: HashMap < _ , _ > = signer_sks. iter ( ) . map ( |x| ( x. to_hex ( ) , x) ) . collect ( ) ;
1066
- let signer_set = get_stacker_set ( & http_origin, reward_cycle + 1 ) ;
1073
+ wait_for ( 30 , || {
1074
+ Ok ( get_stacker_set ( & http_origin, reward_cycle + 1 ) . is_ok ( ) )
1075
+ } )
1076
+ . expect ( "Timed out waiting for stacker set" ) ;
1077
+ let signer_set = get_stacker_set ( & http_origin, reward_cycle + 1 ) . unwrap ( ) ;
1067
1078
// Vote on the aggregate public key
1068
1079
for signer_sk in signer_sks_unique. values ( ) {
1069
1080
let signer_index =
@@ -2566,7 +2577,7 @@ fn correct_burn_outs() {
2566
2577
info ! ( "first_epoch_3_cycle: {:?}" , first_epoch_3_cycle) ;
2567
2578
2568
2579
let http_origin = format ! ( "http://{}" , & naka_conf. node. rpc_bind) ;
2569
- let stacker_response = get_stacker_set ( & http_origin, first_epoch_3_cycle) ;
2580
+ let stacker_response = get_stacker_set ( & http_origin, first_epoch_3_cycle) . unwrap ( ) ;
2570
2581
assert ! ( stacker_response. stacker_set. signers. is_some( ) ) ;
2571
2582
assert_eq ! (
2572
2583
stacker_response. stacker_set. signers. as_ref( ) . unwrap( ) . len( ) ,
@@ -8179,6 +8190,7 @@ fn mock_mining() {
8179
8190
8180
8191
let ( mut naka_conf, _miner_account) = naka_neon_integration_conf ( None ) ;
8181
8192
naka_conf. miner . wait_on_interim_blocks = Duration :: from_secs ( 1 ) ;
8193
+ naka_conf. node . pox_sync_sample_secs = 5 ;
8182
8194
let sender_sk = Secp256k1PrivateKey :: new ( ) ;
8183
8195
let sender_signer_sk = Secp256k1PrivateKey :: new ( ) ;
8184
8196
let sender_signer_addr = tests:: to_addr ( & sender_signer_sk) ;
0 commit comments