@@ -16,6 +16,7 @@ use papyrus_storage::body::BodyStorageReader;
1616use papyrus_storage:: header:: HeaderStorageReader ;
1717use papyrus_storage:: { StorageError , StorageReader } ;
1818use starknet_api:: block:: { BlockHash , BlockNumber } ;
19+ use starknet_api:: core:: ContractAddress ;
1920use starknet_api:: transaction:: Transaction ;
2021use tokio:: sync:: Mutex ;
2122use tracing:: debug;
@@ -47,6 +48,7 @@ impl ConsensusBlock for PapyrusConsensusBlock {
4748pub struct PapyrusConsensusContext {
4849 storage_reader : StorageReader ,
4950 broadcast_sender : Arc < Mutex < SubscriberSender < ConsensusMessage > > > ,
51+ validators : Vec < ValidatorId > ,
5052}
5153
5254impl PapyrusConsensusContext {
@@ -55,8 +57,13 @@ impl PapyrusConsensusContext {
5557 pub fn new (
5658 storage_reader : StorageReader ,
5759 broadcast_sender : SubscriberSender < ConsensusMessage > ,
60+ num_validators : u64 ,
5861 ) -> Self {
59- Self { storage_reader, broadcast_sender : Arc :: new ( Mutex :: new ( broadcast_sender) ) }
62+ Self {
63+ storage_reader,
64+ broadcast_sender : Arc :: new ( Mutex :: new ( broadcast_sender) ) ,
65+ validators : ( 0 ..num_validators) . map ( ContractAddress :: from) . collect ( ) ,
66+ }
6067 }
6168}
6269
@@ -158,11 +165,11 @@ impl ConsensusContext for PapyrusConsensusContext {
158165 }
159166
160167 async fn validators ( & self , _height : BlockNumber ) -> Vec < ValidatorId > {
161- vec ! [ 0u8 . into ( ) , 1u8 . into ( ) , 2u8 . into ( ) , 3u8 . into ( ) ]
168+ self . validators . clone ( )
162169 }
163170
164- fn proposer ( & self , _validators : & [ ValidatorId ] , height : BlockNumber ) -> ValidatorId {
165- ( height . 0 % 2 ) . into ( )
171+ fn proposer ( & self , _validators : & [ ValidatorId ] , _height : BlockNumber ) -> ValidatorId {
172+ * self . validators . first ( ) . expect ( "validators should have at least 2 validators" )
166173 }
167174
168175 async fn broadcast ( & self , message : ConsensusMessage ) -> Result < ( ) , ConsensusError > {
0 commit comments