Skip to content

Commit d0c4b08

Browse files
committed
Refactor multi-signer single signature verification
1 parent 17a7692 commit d0c4b08

File tree

2 files changed

+16
-45
lines changed

2 files changed

+16
-45
lines changed

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,6 @@ impl DependenciesBuilder {
346346
let multi_signer = MultiSignerImpl::new(
347347
self.get_verification_key_store().await?,
348348
self.get_stake_store().await?,
349-
self.get_single_signature_store().await?,
350349
self.get_protocol_parameters_store().await?,
351350
);
352351

mithril-aggregator/src/multi_signer.rs

Lines changed: 16 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ use mithril_common::{
1515
};
1616

1717
use crate::{
18-
database::provider::OpenMessageWithSingleSignatures,
19-
store::{SingleSignatureStorer, VerificationKeyStorer},
20-
ProtocolParametersStore, ProtocolParametersStorer, SingleSignatureStore, VerificationKeyStore,
18+
database::provider::OpenMessageWithSingleSignatures, store::VerificationKeyStorer,
19+
ProtocolParametersStore, ProtocolParametersStorer, VerificationKeyStore,
2120
};
2221

2322
#[cfg(test)]
@@ -185,8 +184,8 @@ pub trait MultiSigner: Sync + Send {
185184
/// Get signers for the next epoch with their stake
186185
async fn get_next_signers_with_stake(&self) -> Result<Vec<SignerWithStake>, ProtocolError>;
187186

188-
/// Registers a single signature
189-
async fn register_single_signature(
187+
/// Verify a single signature
188+
async fn verify_single_signature(
190189
&self,
191190
message: &entities::ProtocolMessage,
192191
signatures: &entities::SingleSignatures,
@@ -213,9 +212,6 @@ pub struct MultiSignerImpl {
213212
/// Stake store
214213
stake_store: Arc<dyn StakeStorer>,
215214

216-
/// Single signature store
217-
single_signature_store: Arc<SingleSignatureStore>,
218-
219215
/// Protocol parameters store
220216
protocol_parameters_store: Arc<ProtocolParametersStore>,
221217
}
@@ -225,7 +221,6 @@ impl MultiSignerImpl {
225221
pub fn new(
226222
verification_key_store: Arc<VerificationKeyStore>,
227223
stake_store: Arc<dyn StakeStorer>,
228-
single_signature_store: Arc<SingleSignatureStore>,
229224
protocol_parameters_store: Arc<ProtocolParametersStore>,
230225
) -> Self {
231226
debug!("New MultiSignerImpl created");
@@ -234,7 +229,6 @@ impl MultiSignerImpl {
234229
current_beacon: None,
235230
verification_key_store,
236231
stake_store,
237-
single_signature_store,
238232
protocol_parameters_store,
239233
}
240234
}
@@ -526,14 +520,14 @@ impl MultiSigner for MultiSignerImpl {
526520
.collect())
527521
}
528522

529-
/// Registers a single signature
530-
async fn register_single_signature(
523+
/// Verify a single signature
524+
async fn verify_single_signature(
531525
&self,
532526
message: &entities::ProtocolMessage,
533527
signatures: &entities::SingleSignatures,
534528
) -> Result<(), ProtocolError> {
535529
debug!(
536-
"Register single signature from {} at indexes {:?} for message {:?}",
530+
"Verify single signature from {} at indexes {:?} for message {:?}",
537531
signatures.party_id, signatures.won_indexes, message
538532
);
539533

@@ -570,22 +564,7 @@ impl MultiSigner for MultiSignerImpl {
570564
)
571565
.map_err(|e| ProtocolError::Core(e.to_string()))?;
572566

573-
// Register single signature
574-
let beacon = self
575-
.current_beacon
576-
.as_ref()
577-
.ok_or_else(ProtocolError::UnavailableBeacon)?;
578-
579-
return match self
580-
.single_signature_store
581-
.save_single_signatures(beacon, signatures)
582-
.await?
583-
{
584-
Some(_) => Err(ProtocolError::ExistingSingleSignature(
585-
signatures.party_id.clone(),
586-
)),
587-
None => Ok(()),
588-
};
567+
Ok(())
589568
}
590569

591570
/// Creates a multi signature from single signatures
@@ -633,10 +612,7 @@ impl MultiSigner for MultiSignerImpl {
633612
#[cfg(test)]
634613
mod tests {
635614
use super::*;
636-
use crate::{
637-
store::{SingleSignatureStore, VerificationKeyStore},
638-
ProtocolParametersStore,
639-
};
615+
use crate::{store::VerificationKeyStore, ProtocolParametersStore};
640616
use chrono::Local;
641617
use mithril_common::{
642618
crypto_helper::tests_setup::*,
@@ -662,16 +638,6 @@ mod tests {
662638
Box::new(MemoryAdapter::<Epoch, StakeDistribution>::new(None).unwrap()),
663639
None,
664640
);
665-
let single_signature_store = SingleSignatureStore::new(
666-
Box::new(
667-
MemoryAdapter::<
668-
entities::Beacon,
669-
HashMap<entities::PartyId, entities::SingleSignatures>,
670-
>::new(None)
671-
.unwrap(),
672-
),
673-
None,
674-
);
675641
let protocol_parameters_store = ProtocolParametersStore::new(
676642
Box::new(
677643
MemoryAdapter::<Epoch, entities::ProtocolParameters>::new(Some(vec![
@@ -695,7 +661,6 @@ mod tests {
695661
let mut multi_signer = MultiSignerImpl::new(
696662
Arc::new(verification_key_store),
697663
Arc::new(stake_store),
698-
Arc::new(single_signature_store),
699664
Arc::new(protocol_parameters_store),
700665
);
701666

@@ -879,6 +844,13 @@ mod tests {
879844
}
880845
}
881846

847+
for signature in &signatures {
848+
multi_signer
849+
.verify_single_signature(&message, signature)
850+
.await
851+
.expect("single signature should be valid");
852+
}
853+
882854
let signatures_to_almost_reach_quorum = take_signatures_until_quorum_is_almost_reached(
883855
&mut signatures,
884856
protocol_parameters.k as usize,

0 commit comments

Comments
 (0)