Skip to content

Commit 9086b7c

Browse files
committed
Remove clerk from multi-signer state
1 parent 776f48a commit 9086b7c

File tree

1 file changed

+18
-37
lines changed

1 file changed

+18
-37
lines changed

mithril-aggregator/src/multi_signer.rs

Lines changed: 18 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use async_trait::async_trait;
22
use chrono::prelude::*;
33
use hex::ToHex;
4-
use slog_scope::{debug, trace, warn};
4+
use slog_scope::{debug, warn};
55
use std::sync::Arc;
66
use thiserror::Error;
77

@@ -211,9 +211,6 @@ pub struct MultiSignerImpl {
211211
/// Signing start datetime of current message
212212
current_initiated_at: Option<DateTime<Utc>>,
213213

214-
/// Clerk used for verifying the single signatures
215-
clerk: Option<ProtocolClerk>,
216-
217214
/// Created multi signature for message signed
218215
multi_signature: Option<ProtocolMultiSignature>,
219216

@@ -243,7 +240,6 @@ impl MultiSignerImpl {
243240
current_message: None,
244241
current_beacon: None,
245242
current_initiated_at: None,
246-
clerk: None,
247243
multi_signature: None,
248244
verification_key_store,
249245
stake_store,
@@ -354,31 +350,6 @@ impl MultiSigner for MultiSignerImpl {
354350
debug!("Update current_message"; "protocol_message" => #?message, "signed message" => message.compute_hash().encode_hex::<String>());
355351

356352
self.multi_signature = None;
357-
let signers_with_stake = self.get_signers_with_stake().await?;
358-
let protocol_parameters = self
359-
.get_protocol_parameters()
360-
.await?
361-
.ok_or_else(ProtocolError::UnavailableProtocolParameters)?;
362-
match self
363-
.create_clerk(&signers_with_stake, &protocol_parameters)
364-
.await
365-
{
366-
Ok(Some(clerk)) => {
367-
trace!("update_current_message::new_clerk_created");
368-
self.clerk = Some(clerk)
369-
}
370-
Ok(None) => {
371-
warn!(
372-
"update_current_message::no_clerk_created: probably not enough signers with valid verification keys";
373-
"signers" => ?signers_with_stake
374-
);
375-
self.clerk = None
376-
}
377-
Err(ProtocolError::Beacon(err)) => {
378-
warn!("update_current_message::error"; "error" => ?err);
379-
}
380-
Err(e) => return Err(e),
381-
}
382353
self.current_initiated_at = Some(Utc::now());
383354
self.current_message = Some(message);
384355
Ok(())
@@ -585,15 +556,17 @@ impl MultiSigner for MultiSignerImpl {
585556
.await?
586557
.ok_or_else(ProtocolError::UnavailableProtocolParameters)?;
587558

588-
let clerk = self
589-
.clerk
590-
.as_ref()
591-
.ok_or_else(ProtocolError::UnavailableClerk)?;
592-
593559
let signature = signatures
594560
.to_protocol_signature()
595561
.map_err(ProtocolError::Codec)?;
596562

563+
let signers_with_stakes = self.get_signers_with_stake().await?;
564+
565+
let clerk = self
566+
.create_clerk(&signers_with_stakes, &protocol_parameters)
567+
.await?
568+
.ok_or_else(ProtocolError::UnavailableClerk)?;
569+
597570
let avk = clerk.compute_avk();
598571

599572
// If there is no reg_party, then we simply received a signature from a non-registered
@@ -649,6 +622,11 @@ impl MultiSigner for MultiSignerImpl {
649622
.current_beacon
650623
.as_ref()
651624
.ok_or_else(ProtocolError::UnavailableBeacon)?;
625+
let protocol_parameters = self
626+
.get_protocol_parameters()
627+
.await?
628+
.ok_or_else(ProtocolError::UnavailableProtocolParameters)?;
629+
652630
let signatures: Vec<ProtocolSingleSignature> = self
653631
.single_signature_store
654632
.get_single_signatures(beacon)
@@ -663,10 +641,13 @@ impl MultiSigner for MultiSignerImpl {
663641
})
664642
.collect::<Vec<_>>();
665643

644+
let signers_with_stakes = self.get_signers_with_stake().await?;
645+
666646
let clerk = self
667-
.clerk
668-
.as_ref()
647+
.create_clerk(&signers_with_stakes, &protocol_parameters)
648+
.await?
669649
.ok_or_else(ProtocolError::UnavailableClerk)?;
650+
670651
match clerk.aggregate(&signatures, message.compute_hash().as_bytes()) {
671652
Ok(multi_signature) => {
672653
self.multi_signature = Some(multi_signature.clone());

0 commit comments

Comments
 (0)