@@ -71,76 +71,74 @@ use mithril_stm::{Clerk, Parameters, SingleSignature, KeyRegistration, Initializ
7171
7272type H = Blake2b <U32 >;
7373
74- fn main () {
75- let nparties = 32 ;
76- let mut rng = ChaCha20Rng :: from_seed ([0u8 ; 32 ]);
77- let mut msg = [0u8 ; 16 ];
78- rng . fill_bytes (& mut msg );
79-
80- /// ///////////////////////
81- // initialization phase //
82- /// ///////////////////////
83-
84- let params = Parameters {
85- k : 357 ,
86- m : 2642 ,
87- phi_f : 0.2 ,
88- };
89-
90- let parties = (0 .. nparties )
91- . into_iter ()
92- . map (| _ | 1 + (rng . next_u64 () % 9999 ))
93- . collect :: <Vec <_ >>();
94-
95- let mut key_reg = KeyRegistration :: init ();
96-
97- let mut ps : Vec <Initializer > = Vec :: with_capacity (nparties as usize );
98- for stake in parties {
99- let p = Initializer :: setup (params , stake , & mut rng );
100- key_reg . register (stake , p . verification_key ()). unwrap ();
101- ps . push (p );
102- }
74+ let nparties = 32 ;
75+ let mut rng = ChaCha20Rng :: from_seed ([0u8 ; 32 ]);
76+ let mut msg = [0u8 ; 16 ];
77+ rng . fill_bytes (& mut msg );
78+
79+ /// ///////////////////////
80+ // initialization phase //
81+ /// ///////////////////////
82+
83+ let params = Parameters {
84+ k : 357 ,
85+ m : 2642 ,
86+ phi_f : 0.2 ,
87+ };
88+
89+ let parties = (0 .. nparties )
90+ . into_iter ()
91+ . map (| _ | 1 + (rng . next_u64 () % 9999 ))
92+ . collect :: <Vec <_ >>();
93+
94+ let mut key_reg = KeyRegistration :: init ();
95+
96+ let mut ps : Vec <Initializer > = Vec :: with_capacity (nparties as usize );
97+ for stake in parties {
98+ let p = Initializer :: setup (params , stake , & mut rng );
99+ key_reg . register (stake , p . verification_key ()). unwrap ();
100+ ps . push (p );
101+ }
103102
104- let closed_reg = key_reg . close ();
103+ let closed_reg = key_reg . close ();
105104
106- let ps = ps
107- . into_par_iter ()
108- . map (| p | p . new_signer (closed_reg . clone ()). unwrap ())
109- . collect :: <Vec <Signer <H >>>();
105+ let ps = ps
106+ . into_par_iter ()
107+ . map (| p | p . new_signer (closed_reg . clone ()). unwrap ())
108+ . collect :: <Vec <Signer <H >>>();
110109
111- /// //////////////////
112- // operation phase //
113- /// //////////////////
110+ /// //////////////////
111+ // operation phase //
112+ /// //////////////////
114113
115- let sigs = ps
116- . par_iter ()
117- . filter_map (| p | p . sign (& msg ))
118- . collect :: <Vec <SingleSignature >>();
114+ let sigs = ps
115+ . par_iter ()
116+ . filter_map (| p | p . sign (& msg ))
117+ . collect :: <Vec <SingleSignature >>();
119118
120- let clerk = Clerk :: from_signer (& ps [0 ]);
121- let avk = clerk . compute_avk ();
119+ let clerk = Clerk :: from_signer (& ps [0 ]);
120+ let avk = clerk . compute_avk ();
122121
123- // Check all parties can verify every sig
124- for (s , p ) in sigs . iter (). zip (ps . iter ()) {
125- assert! (s . verify (& params , & p . verification_key (), & p . get_stake (), & avk , & msg ). is_ok (), " Verification
126- failed" );
127- }
122+ // Check all parties can verify every sig
123+ for (s , p ) in sigs . iter (). zip (ps . iter ()) {
124+ assert! (s . verify (& params , & p . verification_key (), & p . get_stake (), & avk , & msg ). is_ok (), " Verification
125+ failed" );
126+ }
128127
129- // Aggregate with random parties
130- let msig = clerk . aggregate (& sigs , & msg );
131-
132- match msig {
133- Ok (aggr ) => {
134- println! (" Aggregate ok" );
135- assert! (aggr . verify (& msg , & clerk . compute_avk (), & params ). is_ok ());
136- }
137- Err (AggregationError :: NotEnoughSignatures (n , k )) => {
138- println! (" Not enough signatures" );
139- assert! (n < params . k && k == params . k)
140- }
141- Err (AggregationError :: UsizeConversionInvalid ) => {
142- println! (" Invalid usize conversion" );
143- }
128+ // Aggregate with random parties
129+ let msig = clerk . aggregate (& sigs , & msg );
130+
131+ match msig {
132+ Ok (aggr ) => {
133+ println! (" Aggregate ok" );
134+ assert! (aggr . verify (& msg , & clerk . compute_avk (), & params ). is_ok ());
135+ }
136+ Err (AggregationError :: NotEnoughSignatures (n , k )) => {
137+ println! (" Not enough signatures" );
138+ assert! (n < params . k && k == params . k)
139+ }
140+ Err (AggregationError :: UsizeConversionInvalid ) => {
141+ println! (" Invalid usize conversion" );
144142 }
145143}
146144```
0 commit comments