@@ -5,6 +5,7 @@ mod dependency;
55mod entities;
66mod fake_data;
77mod http_server;
8+ mod multi_signer;
89mod snapshot_store;
910mod snapshotter;
1011
@@ -17,6 +18,10 @@ use tokio::sync::RwLock;
1718
1819use crate :: entities:: Config ;
1920use crate :: http_server:: Server ;
21+ use crate :: multi_signer:: {
22+ key_decode_hex, MultiSigner , MultiSignerImpl , ProtocolParameters , ProtocolPartyId ,
23+ ProtocolSignerVerificationKey , ProtocolStake ,
24+ } ;
2025use crate :: snapshot_store:: SnapshotStoreHTTPClient ;
2126use crate :: snapshotter:: Snapshotter ;
2227
@@ -77,9 +82,13 @@ async fn main() {
7782 config. url_snapshot_manifest . clone ( ) ,
7883 ) ) ) ;
7984
85+ let multi_signer = Arc :: new ( RwLock :: new ( init_multi_signer ( ) ) ) ;
86+
8087 // Init dependecy manager
8188 let mut dependency_manager = dependency:: DependencyManager :: new ( config) ;
82- dependency_manager. with_snapshot_storer ( snapshot_storer. clone ( ) ) ;
89+ dependency_manager
90+ . with_snapshot_storer ( snapshot_storer. clone ( ) )
91+ . with_multi_signer ( multi_signer. clone ( ) ) ;
8392 let dependency_manager = Arc :: new ( dependency_manager) ;
8493
8594 // Start snapshot uploader
@@ -104,3 +113,47 @@ async fn main() {
104113
105114 println ! ( "Exiting..." ) ;
106115}
116+
117+ /// Init multi signer dependency
118+ fn init_multi_signer ( ) -> impl MultiSigner {
119+ let mut multi_signer = MultiSignerImpl :: new ( ) ;
120+
121+ // Update protocol parameters
122+ let protocol_parameters = fake_data:: protocol_parameters ( ) ;
123+ let protocol_parameters = ProtocolParameters {
124+ m : protocol_parameters. m ,
125+ k : protocol_parameters. k ,
126+ phi_f : protocol_parameters. phi_f as f64 ,
127+ } ;
128+ multi_signer
129+ . update_protocol_parameters ( & protocol_parameters)
130+ . expect ( "update protocol parameters failed" ) ;
131+
132+ // Update stake distribution
133+ let total_signers = 5 ;
134+ let stakes = fake_data:: signers_with_stakes ( total_signers)
135+ . iter ( )
136+ . map ( |signer| {
137+ (
138+ signer. party_id as ProtocolPartyId ,
139+ signer. stake as ProtocolStake ,
140+ )
141+ } )
142+ . collect :: < _ > ( ) ;
143+ multi_signer
144+ . update_stake_distribution ( & stakes)
145+ . expect ( "stake distribution update failed" ) ;
146+
147+ // Register signers
148+ fake_data:: signers ( total_signers) . iter ( ) . for_each ( |signer| {
149+ multi_signer
150+ . register_signer (
151+ signer. party_id as ProtocolPartyId ,
152+ & key_decode_hex :: < ProtocolSignerVerificationKey > ( signer. verification_key . clone ( ) )
153+ . unwrap ( ) ,
154+ )
155+ . expect ( "register signer failed" ) ;
156+ } ) ;
157+
158+ multi_signer
159+ }
0 commit comments