@@ -3,7 +3,7 @@ use mithril_common::store::StorePruner;
3
3
use std:: collections:: HashMap ;
4
4
use tokio:: sync:: RwLock ;
5
5
6
- use mithril_common:: entities:: { Epoch , PartyId , Signer } ;
6
+ use mithril_common:: entities:: { Epoch , PartyId , Signer , SignerWithStake } ;
7
7
use mithril_common:: store:: { adapter:: StoreAdapter , StoreError } ;
8
8
9
9
type Adapter = Box < dyn StoreAdapter < Key = Epoch , Record = HashMap < PartyId , Signer > > > ;
@@ -15,8 +15,8 @@ pub trait VerificationKeyStorer {
15
15
async fn save_verification_key (
16
16
& self ,
17
17
epoch : Epoch ,
18
- signer : Signer ,
19
- ) -> Result < Option < Signer > , StoreError > ;
18
+ signer : SignerWithStake ,
19
+ ) -> Result < Option < SignerWithStake > , StoreError > ;
20
20
21
21
/// Returns a HashMap of [Signer] indexed by [PartyId] for the given `Beacon`.
22
22
async fn get_verification_keys (
@@ -61,21 +61,21 @@ impl VerificationKeyStorer for VerificationKeyStore {
61
61
async fn save_verification_key (
62
62
& self ,
63
63
epoch : Epoch ,
64
- signer : Signer ,
65
- ) -> Result < Option < Signer > , StoreError > {
64
+ signer : SignerWithStake ,
65
+ ) -> Result < Option < SignerWithStake > , StoreError > {
66
66
let mut signers = match self . adapter . read ( ) . await . get_record ( & epoch) . await ? {
67
67
Some ( s) => s,
68
68
None => HashMap :: new ( ) ,
69
69
} ;
70
- let prev_signer = signers. insert ( signer. party_id . to_owned ( ) , signer) ;
70
+ let prev_signer = signers. insert ( signer. party_id . to_owned ( ) , signer. clone ( ) . into ( ) ) ;
71
71
self . adapter
72
72
. write ( )
73
73
. await
74
74
. store_record ( & epoch, & signers)
75
75
. await ?;
76
76
self . prune ( ) . await ?;
77
77
78
- Ok ( prev_signer)
78
+ Ok ( prev_signer. map ( |prev_signer| SignerWithStake :: from_signer ( prev_signer , signer . stake ) ) )
79
79
}
80
80
81
81
async fn get_verification_keys (
@@ -135,12 +135,13 @@ mod tests {
135
135
let res = store
136
136
. save_verification_key (
137
137
Epoch ( 0 ) ,
138
- Signer {
138
+ SignerWithStake {
139
139
party_id : "0" . to_string ( ) ,
140
140
verification_key : "OK" . to_string ( ) ,
141
141
verification_key_signature : None ,
142
142
operational_certificate : None ,
143
143
kes_period : None ,
144
+ stake : 10 ,
144
145
} ,
145
146
)
146
147
. await
@@ -155,25 +156,27 @@ mod tests {
155
156
let res = store
156
157
. save_verification_key (
157
158
Epoch ( 1 ) ,
158
- Signer {
159
+ SignerWithStake {
159
160
party_id : "1" . to_string ( ) ,
160
161
verification_key : "test" . to_string ( ) ,
161
162
verification_key_signature : None ,
162
163
operational_certificate : None ,
163
164
kes_period : None ,
165
+ stake : 10 ,
164
166
} ,
165
167
)
166
168
. await
167
169
. unwrap ( ) ;
168
170
169
171
assert ! ( res. is_some( ) ) ;
170
172
assert_eq ! (
171
- Signer {
173
+ SignerWithStake {
172
174
party_id: "1" . to_string( ) ,
173
175
verification_key: "vkey 1" . to_string( ) ,
174
176
verification_key_signature: None ,
175
177
operational_certificate: None ,
176
178
kes_period: None ,
179
+ stake: 10 ,
177
180
} ,
178
181
res. unwrap( ) ,
179
182
) ;
@@ -207,12 +210,13 @@ mod tests {
207
210
let _ = store
208
211
. save_verification_key (
209
212
Epoch ( 3 ) ,
210
- Signer {
213
+ SignerWithStake {
211
214
party_id : "party_id" . to_string ( ) ,
212
215
verification_key : "whatever" . to_string ( ) ,
213
216
verification_key_signature : None ,
214
217
operational_certificate : None ,
215
218
kes_period : None ,
219
+ stake : 10 ,
216
220
} ,
217
221
)
218
222
. await
0 commit comments