@@ -71,76 +71,74 @@ use mithril_stm::{Clerk, Parameters, SingleSignature, KeyRegistration, Initializ
71
71
72
72
type H = Blake2b <U32 >;
73
73
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
+ }
103
102
104
- let closed_reg = key_reg . close ();
103
+ let closed_reg = key_reg . close ();
105
104
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 >>>();
110
109
111
- /// //////////////////
112
- // operation phase //
113
- /// //////////////////
110
+ /// //////////////////
111
+ // operation phase //
112
+ /// //////////////////
114
113
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 >>();
119
118
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 ();
122
121
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
+ }
128
127
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" );
144
142
}
145
143
}
146
144
```
0 commit comments