@@ -42,19 +42,16 @@ fn get_proposal_init_for_height(height: BlockNumber) -> ProposalInit {
4242 ProposalInit { height, ..* PROPOSAL_INIT }
4343}
4444
45- fn prevote_task ( block_felt : Option < Felt > , round : u32 ) -> ShcTask {
45+ fn prevote_task ( block_felt : Option < Felt > , round : u32 , voter : ValidatorId ) -> ShcTask {
4646 let duration = TIMEOUTS . get_prevote_timeout ( round) ;
47- ShcTask :: Prevote (
48- duration,
49- StateMachineEvent :: Prevote ( block_felt. map ( ProposalCommitment ) , round) ,
50- )
47+ ShcTask :: Prevote ( duration, StateMachineEvent :: Prevote ( prevote ( block_felt, 0 , round, voter) ) )
5148}
5249
53- fn precommit_task ( block_felt : Option < Felt > , round : u32 ) -> ShcTask {
50+ fn precommit_task ( block_felt : Option < Felt > , round : u32 , voter : ValidatorId ) -> ShcTask {
5451 let duration = TIMEOUTS . get_precommit_timeout ( round) ;
5552 ShcTask :: Precommit (
5653 duration,
57- StateMachineEvent :: Precommit ( block_felt . map ( ProposalCommitment ) , round) ,
54+ StateMachineEvent :: Precommit ( precommit ( block_felt , 0 , round, voter ) ) ,
5855 )
5956}
6057
@@ -115,7 +112,7 @@ async fn proposer() {
115112 assert_eq ! ( * shc_ret. as_tasks( ) . unwrap( ) [ 0 ] . as_build_proposal( ) . unwrap( ) . 0 , 0 ) ;
116113 assert_eq ! (
117114 shc. handle_event( & mut context, StateMachineEvent :: GetProposal ( Some ( BLOCK . id) , 0 ) ) . await ,
118- Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 ) ] ) )
115+ Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID ) ] ) )
119116 ) ;
120117 assert_eq ! (
121118 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , 0 , 0 , * VALIDATOR_ID_1 ) ) . await ,
@@ -130,7 +127,10 @@ async fn proposer() {
130127 // The Node got a Prevote quorum.
131128 assert_eq ! (
132129 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , 0 , 0 , * VALIDATOR_ID_2 ) ) . await ,
133- Ok ( ShcReturn :: Tasks ( vec![ timeout_prevote_task( 0 ) , precommit_task( Some ( BLOCK . id. 0 ) , 0 ) , ] ) )
130+ Ok ( ShcReturn :: Tasks ( vec![
131+ timeout_prevote_task( 0 ) ,
132+ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID )
133+ ] ) )
134134 ) ;
135135
136136 let precommits = vec ! [
@@ -194,7 +194,7 @@ async fn validator(repeat_proposal: bool) {
194194 ) ;
195195 assert_eq ! (
196196 shc. handle_event( & mut context, VALIDATE_PROPOSAL_EVENT . clone( ) ) . await ,
197- Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 ) ] ) )
197+ Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 , * VALIDATOR_ID_1 ) ] ) )
198198 ) ;
199199 if repeat_proposal {
200200 // Send the same proposal again, which should be ignored (no expectations).
@@ -215,7 +215,10 @@ async fn validator(repeat_proposal: bool) {
215215 assert_eq ! (
216216 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , HEIGHT . 0 , 0 , * VALIDATOR_ID_2 ) )
217217 . await ,
218- Ok ( ShcReturn :: Tasks ( vec![ timeout_prevote_task( 0 ) , precommit_task( Some ( BLOCK . id. 0 ) , 0 ) ] ) )
218+ Ok ( ShcReturn :: Tasks ( vec![
219+ timeout_prevote_task( 0 ) ,
220+ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * VALIDATOR_ID_1 )
221+ ] ) )
219222 ) ;
220223
221224 let precommits = vec ! [
@@ -272,7 +275,7 @@ async fn vote_twice(same_vote: bool) {
272275 ) ;
273276 assert_eq ! (
274277 shc. handle_event( & mut context, VALIDATE_PROPOSAL_EVENT . clone( ) ) . await ,
275- Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 ) ] ) )
278+ Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 , * VALIDATOR_ID_1 ) ] ) )
276279 ) ;
277280
278281 let res =
@@ -290,7 +293,10 @@ async fn vote_twice(same_vote: bool) {
290293 // The Node got a Prevote quorum.
291294 assert_eq ! (
292295 res,
293- Ok ( ShcReturn :: Tasks ( vec![ timeout_prevote_task( 0 ) , precommit_task( Some ( BLOCK . id. 0 ) , 0 ) , ] ) )
296+ Ok ( ShcReturn :: Tasks ( vec![
297+ timeout_prevote_task( 0 ) ,
298+ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * VALIDATOR_ID_1 ) ,
299+ ] ) )
294300 ) ;
295301
296302 let first_vote = precommit ( Some ( BLOCK . id . 0 ) , HEIGHT . 0 , 0 , * PROPOSER_ID ) ;
@@ -345,7 +351,7 @@ async fn rebroadcast_votes() {
345351 assert_eq ! ( * shc_ret. as_tasks( ) . unwrap( ) [ 0 ] . as_build_proposal( ) . unwrap( ) . 0 , 0 ) ;
346352 assert_eq ! (
347353 shc. handle_event( & mut context, StateMachineEvent :: GetProposal ( Some ( BLOCK . id) , 0 ) ) . await ,
348- Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 ) ] ) )
354+ Ok ( ShcReturn :: Tasks ( vec![ prevote_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID ) ] ) )
349355 ) ;
350356 assert_eq ! (
351357 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , 0 , 0 , * VALIDATOR_ID_1 ) ) . await ,
@@ -362,12 +368,19 @@ async fn rebroadcast_votes() {
362368 // The Node got a Prevote quorum.
363369 assert_eq ! (
364370 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , 0 , 0 , * VALIDATOR_ID_2 ) ) . await ,
365- Ok ( ShcReturn :: Tasks ( vec![ timeout_prevote_task( 0 ) , precommit_task( Some ( BLOCK . id. 0 ) , 0 ) , ] ) )
371+ Ok ( ShcReturn :: Tasks ( vec![
372+ timeout_prevote_task( 0 ) ,
373+ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID ) ,
374+ ] ) )
366375 ) ;
367376 // Re-broadcast vote.
368377 assert_eq ! (
369- shc. handle_event( & mut context, StateMachineEvent :: Precommit ( Some ( BLOCK . id) , 0 ) ) . await ,
370- Ok ( ShcReturn :: Tasks ( vec![ precommit_task( Some ( BLOCK . id. 0 ) , 0 ) , ] ) )
378+ shc. handle_event(
379+ & mut context,
380+ StateMachineEvent :: Precommit ( precommit( Some ( BLOCK . id. 0 ) , 0 , 0 , * PROPOSER_ID ) )
381+ )
382+ . await ,
383+ Ok ( ShcReturn :: Tasks ( vec![ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID ) , ] ) )
371384 ) ;
372385}
373386
@@ -410,7 +423,10 @@ async fn repropose() {
410423 // The Node got a Prevote quorum, and set valid proposal.
411424 assert_eq ! (
412425 shc. handle_vote( & mut context, prevote( Some ( BLOCK . id. 0 ) , 0 , 0 , * VALIDATOR_ID_2 ) ) . await ,
413- Ok ( ShcReturn :: Tasks ( vec![ timeout_prevote_task( 0 ) , precommit_task( Some ( BLOCK . id. 0 ) , 0 ) , ] ) )
426+ Ok ( ShcReturn :: Tasks ( vec![
427+ timeout_prevote_task( 0 ) ,
428+ precommit_task( Some ( BLOCK . id. 0 ) , 0 , * PROPOSER_ID ) ,
429+ ] ) )
414430 ) ;
415431 // Advance to the next round.
416432 let precommits = vec ! [
0 commit comments