@@ -35,6 +35,7 @@ typedef struct {
3535 using the stake delegations cache. */
3636static void
3737fd_solfuzz_block_refresh_vote_accounts ( fd_vote_states_t * vote_states ,
38+ fd_vote_states_t * vote_states_prev ,
3839 fd_vote_states_t * vote_states_prev_prev ,
3940 fd_stake_delegations_t * stake_delegations ,
4041 ulong epoch ) {
@@ -53,6 +54,7 @@ fd_solfuzz_block_refresh_vote_accounts( fd_vote_states_t * vote_states,
5354 if ( !vote_state ) continue ;
5455
5556 vote_state -> stake += stake ;
57+ vote_state -> stake_t_1 += stake ;
5658 vote_state -> stake_t_2 += stake ;
5759 }
5860
@@ -70,6 +72,17 @@ fd_solfuzz_block_refresh_vote_accounts( fd_vote_states_t * vote_states,
7072 vote_state -> stake_t_2 = epoch >=2UL ? t_2_stake : vote_state -> stake ;
7173 vote_state -> stake_t_2 = vote_state -> stake ;
7274 }
75+
76+ /* Set stake_t_1 for the vote accounts in the vote states cache. */
77+ for ( fd_vote_states_iter_t * iter = fd_vote_states_iter_init ( vs_iter_ , vote_states_prev );
78+ !fd_vote_states_iter_done ( iter );
79+ fd_vote_states_iter_next ( iter ) ) {
80+ fd_vote_state_ele_t * vote_state = fd_vote_states_iter_ele ( iter );
81+ fd_vote_state_ele_t * vote_state_prev = fd_vote_states_query ( vote_states_prev , & vote_state -> vote_account );
82+ ulong t_1_stake = !!vote_state_prev ? vote_state_prev -> stake : 0UL ;
83+ vote_state -> stake_t_1 = epoch >=1UL ? t_1_stake : vote_state -> stake ;
84+ vote_state -> stake_t_1 = vote_state -> stake ;
85+ }
7386}
7487
7588/* Registers a single vote account into the current votes cache. The
@@ -180,6 +193,7 @@ fd_solfuzz_pb_block_update_prev_epoch_votes_cache( fd_vote_states_t *
180193 fd_vote_states_update_from_account ( vote_states , & vote_address , vote_data , vote_data_len );
181194 fd_vote_state_ele_t * vote_state = fd_vote_states_query ( vote_states , & vote_address );
182195 vote_state -> stake += stake ;
196+ vote_state -> stake_t_1 += stake ;
183197 vote_state -> stake_t_2 += stake ;
184198 }
185199 } FD_SPAD_FRAME_END ;
@@ -347,7 +361,12 @@ fd_solfuzz_pb_block_ctx_create( fd_solfuzz_runner_t * runner,
347361 runner -> spad );
348362
349363 /* Refresh vote accounts to calculate stake delegations */
350- fd_solfuzz_block_refresh_vote_accounts ( vote_states , vote_states_prev_prev , stake_delegations , fd_bank_epoch_get ( bank ) );
364+ fd_solfuzz_block_refresh_vote_accounts (
365+ vote_states ,
366+ vote_states_prev ,
367+ vote_states_prev_prev ,
368+ stake_delegations ,
369+ fd_bank_epoch_get ( bank ) );
351370 fd_bank_vote_states_end_locking_modify ( bank );
352371
353372 fd_bank_vote_states_prev_prev_end_locking_modify ( bank );
@@ -639,7 +658,7 @@ fd_solfuzz_pb_build_leader_schedule_effects( fd_solfuzz_runner_t *
639658 memcpy ( & pubkey , test_ctx -> acct_states [i ].address , sizeof (fd_pubkey_t ) );
640659 fd_solfuzz_block_register_stake_delegation ( runner -> accdb -> funk , xid , stake_delegations , & pubkey );
641660 }
642- fd_solfuzz_block_refresh_vote_accounts ( tmp_vs , tmp_vs , stake_delegations , fd_bank_epoch_get ( runner -> bank ) );
661+ fd_solfuzz_block_refresh_vote_accounts ( tmp_vs , tmp_vs , tmp_vs , stake_delegations , fd_bank_epoch_get ( runner -> bank ) );
643662 }
644663
645664 /* Build weights from the selected stake source */
0 commit comments