Skip to content

Commit 74d2982

Browse files
committed
refactor(signer): impl SignaturePublisher directly on AggregatorHttpClient
Instead of implementing the publisher on the signer `AggregatorClient`, removing an intermediate layer
1 parent 161e0fc commit 74d2982

File tree

4 files changed

+42
-66
lines changed

4 files changed

+42
-66
lines changed

mithril-signer/src/runtime/runner.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,8 @@ mod tests {
415415
use crate::metrics::MetricsService;
416416
use crate::services::{
417417
CardanoTransactionsImporter, DumbAggregatorClient, MithrilEpochService,
418-
MithrilSingleSigner, MockTransactionStore, MockUpkeepService, SignerCertifierService,
419-
SignerSignableSeedBuilder, SignerSignedEntityConfigProvider,
418+
MithrilSingleSigner, MockTransactionStore, MockUpkeepService, SignaturePublisherNoop,
419+
SignerCertifierService, SignerSignableSeedBuilder, SignerSignedEntityConfigProvider,
420420
};
421421
use crate::test_tools::TestLogger;
422422

@@ -552,7 +552,7 @@ mod tests {
552552
Arc::new(SignerSignedEntityConfigProvider::new(epoch_service.clone())),
553553
signed_entity_type_lock.clone(),
554554
single_signer.clone(),
555-
aggregator_client.clone(),
555+
Arc::new(SignaturePublisherNoop),
556556
logger.clone(),
557557
));
558558
let kes_signer = None;

mithril-signer/src/services/aggregator_client.rs

Lines changed: 4 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
1-
use anyhow::anyhow;
21
use async_trait::async_trait;
32

3+
use mithril_aggregator_client::AggregatorHttpClient;
44
use mithril_aggregator_client::query::{
5-
GetAggregatorFeaturesQuery, GetEpochSettingsQuery, PostRegisterSignatureQuery,
6-
PostRegisterSignerQuery,
5+
GetAggregatorFeaturesQuery, GetEpochSettingsQuery, PostRegisterSignerQuery,
76
};
8-
use mithril_aggregator_client::{AggregatorHttpClient, AggregatorHttpClientError};
97
use mithril_common::{
108
StdResult,
11-
entities::{Epoch, ProtocolMessage, SignedEntityType, Signer, SingleSignature},
9+
entities::{Epoch, Signer},
1210
messages::{AggregatorFeaturesMessage, TryFromMessageAdapter, TryToMessageAdapter},
1311
};
1412

1513
use crate::entities::SignerEpochSettings;
16-
use crate::message_adapters::{
17-
FromEpochSettingsAdapter, ToRegisterSignatureMessageAdapter, ToRegisterSignerMessageAdapter,
18-
};
14+
use crate::message_adapters::{FromEpochSettingsAdapter, ToRegisterSignerMessageAdapter};
1915

2016
/// Trait for mocking and testing a `AggregatorClient`
2117
#[cfg_attr(test, mockall::automock)]
@@ -27,14 +23,6 @@ pub trait AggregatorClient: Sync + Send {
2723
/// Registers signer with the aggregator.
2824
async fn register_signer(&self, epoch: Epoch, signer: &Signer) -> StdResult<()>;
2925

30-
/// Registers single signature with the aggregator.
31-
async fn register_signature(
32-
&self,
33-
signed_entity_type: &SignedEntityType,
34-
signature: &SingleSignature,
35-
protocol_message: &ProtocolMessage,
36-
) -> StdResult<()>;
37-
3826
/// Retrieves aggregator features message from the aggregator
3927
async fn retrieve_aggregator_features(&self) -> StdResult<AggregatorFeaturesMessage>;
4028
}
@@ -58,27 +46,6 @@ impl AggregatorClient for AggregatorHttpClient {
5846
Ok(())
5947
}
6048

61-
async fn register_signature(
62-
&self,
63-
signed_entity_type: &SignedEntityType,
64-
signature: &SingleSignature,
65-
protocol_message: &ProtocolMessage,
66-
) -> StdResult<()> {
67-
let register_single_signature_message = ToRegisterSignatureMessageAdapter::try_adapt((
68-
signed_entity_type.to_owned(),
69-
signature.to_owned(),
70-
protocol_message,
71-
))
72-
.map_err(|e| AggregatorHttpClientError::JsonParseFailed(anyhow!(e)))?;
73-
74-
self.send(PostRegisterSignatureQuery::new(
75-
register_single_signature_message,
76-
))
77-
.await?;
78-
79-
Ok(())
80-
}
81-
8249
async fn retrieve_aggregator_features(&self) -> StdResult<AggregatorFeaturesMessage> {
8350
let aggregator_features = self.send(GetAggregatorFeaturesQuery::current()).await?;
8451
Ok(aggregator_features)
@@ -145,16 +112,6 @@ pub(crate) mod dumb {
145112
Ok(())
146113
}
147114

148-
/// Registers single signature with the aggregator
149-
async fn register_signature(
150-
&self,
151-
_signed_entity_type: &SignedEntityType,
152-
_signature: &SingleSignature,
153-
_protocol_message: &ProtocolMessage,
154-
) -> StdResult<()> {
155-
Ok(())
156-
}
157-
158115
async fn retrieve_aggregator_features(&self) -> StdResult<AggregatorFeaturesMessage> {
159116
let aggregator_features = self.aggregator_features.read().await;
160117
Ok(aggregator_features.clone())
Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,37 @@
1+
use anyhow::Context;
12
use async_trait::async_trait;
2-
use mithril_common::StdResult;
3-
use mithril_common::entities::{ProtocolMessage, SignedEntityType, SingleSignature};
43

5-
use crate::services::AggregatorClient;
4+
use mithril_aggregator_client::{AggregatorHttpClient, query::PostRegisterSignatureQuery};
5+
use mithril_common::{
6+
StdResult,
7+
entities::{ProtocolMessage, SignedEntityType, SingleSignature},
8+
messages::TryToMessageAdapter,
9+
};
10+
11+
use crate::message_adapters::ToRegisterSignatureMessageAdapter;
612

713
use super::SignaturePublisher;
814

915
#[async_trait]
10-
impl<T: AggregatorClient> SignaturePublisher for T {
16+
impl SignaturePublisher for AggregatorHttpClient {
1117
async fn publish(
1218
&self,
1319
signed_entity_type: &SignedEntityType,
1420
signature: &SingleSignature,
1521
protocol_message: &ProtocolMessage,
1622
) -> StdResult<()> {
17-
self.register_signature(signed_entity_type, signature, protocol_message)
18-
.await?;
23+
let register_single_signature_message = ToRegisterSignatureMessageAdapter::try_adapt((
24+
signed_entity_type.to_owned(),
25+
signature.to_owned(),
26+
protocol_message,
27+
))
28+
.with_context(|| "Failed to adapt message to register single signature message")?;
29+
30+
self.send(PostRegisterSignatureQuery::new(
31+
register_single_signature_message,
32+
))
33+
.await?;
34+
1935
Ok(())
2036
}
2137
}

mithril-signer/tests/test_extensions/certificate_handler.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use mithril_common::{
1414
};
1515
use mithril_ticker::{MithrilTickerService, TickerService};
1616

17+
use mithril_signer::services::SignaturePublisher;
1718
use mithril_signer::{entities::SignerEpochSettings, services::AggregatorClient};
1819

1920
pub struct FakeAggregator {
@@ -80,6 +81,18 @@ impl FakeAggregator {
8081
}
8182
}
8283

84+
#[async_trait]
85+
impl SignaturePublisher for FakeAggregator {
86+
async fn publish(
87+
&self,
88+
_signed_entity_type: &SignedEntityType,
89+
_signature: &SingleSignature,
90+
_protocol_message: &ProtocolMessage,
91+
) -> StdResult<()> {
92+
Ok(())
93+
}
94+
}
95+
8396
#[async_trait]
8497
impl AggregatorClient for FakeAggregator {
8598
async fn retrieve_epoch_settings(&self) -> StdResult<Option<SignerEpochSettings>> {
@@ -109,16 +122,6 @@ impl AggregatorClient for FakeAggregator {
109122
Ok(())
110123
}
111124

112-
/// Registers single signatures with the aggregator
113-
async fn register_signature(
114-
&self,
115-
_signed_entity_type: &SignedEntityType,
116-
_signature: &SingleSignature,
117-
_protocol_message: &ProtocolMessage,
118-
) -> StdResult<()> {
119-
Ok(())
120-
}
121-
122125
async fn retrieve_aggregator_features(&self) -> StdResult<AggregatorFeaturesMessage> {
123126
let signed_entity_config = self.signed_entity_config.read().await;
124127

0 commit comments

Comments
 (0)