Skip to content

Commit 29edbb7

Browse files
committed
Add signing config to AggregatorFeaturesMessage in common
1 parent 2f3c64b commit 29edbb7

File tree

2 files changed

+68
-4
lines changed

2 files changed

+68
-4
lines changed

mithril-aggregator/src/http_server/routes/root_routes.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ mod handlers {
7070
capabilities: AggregatorCapabilities {
7171
signed_entity_types,
7272
cardano_transactions_prover: cardano_transactions_prover_capabilities,
73+
cardano_transactions_signing_config: None,
7374
},
7475
},
7576
StatusCode::OK,
@@ -150,7 +151,8 @@ mod tests {
150151
SignedEntityTypeDiscriminants::CardanoImmutableFilesFull,
151152
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
152153
]),
153-
cardano_transactions_prover: None
154+
cardano_transactions_prover: None,
155+
cardano_transactions_signing_config: None,
154156
},
155157
}
156158
);

mithril-common/src/messages/aggregator_features.rs

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::collections::BTreeSet;
22

33
use serde::{Deserialize, Serialize};
44

5-
use crate::entities::SignedEntityTypeDiscriminants;
5+
use crate::entities::{CardanoTransactionsSigningConfig, SignedEntityTypeDiscriminants};
66

77
/// Message advertised by an Aggregator to inform about its features
88
#[derive(Debug, Serialize, Deserialize, PartialEq)]
@@ -28,6 +28,7 @@ impl AggregatorFeaturesMessage {
2828
SignedEntityTypeDiscriminants::MithrilStakeDistribution,
2929
]),
3030
cardano_transactions_prover: None,
31+
cardano_transactions_signing_config: None,
3132
},
3233
}
3334
}
@@ -42,6 +43,10 @@ pub struct AggregatorCapabilities {
4243
/// Cardano transactions prover capabilities
4344
#[serde(skip_serializing_if = "Option::is_none")]
4445
pub cardano_transactions_prover: Option<CardanoTransactionsProverCapabilities>,
46+
47+
/// Cardano transactions signing configuration
48+
#[serde(skip_serializing_if = "Option::is_none")]
49+
pub cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,
4550
}
4651

4752
/// Cardano transactions prover capabilities
@@ -53,9 +58,40 @@ pub struct CardanoTransactionsProverCapabilities {
5358

5459
#[cfg(test)]
5560
mod tests {
61+
use crate::entities::BlockNumber;
62+
5663
use super::*;
5764

58-
fn golden_message() -> AggregatorFeaturesMessage {
65+
#[derive(Debug, Serialize, Deserialize, PartialEq)]
66+
struct AggregatorFeaturesMessagePrevious {
67+
pub open_api_version: String,
68+
pub documentation_url: String,
69+
pub capabilities: AggregatorCapabilitiesPrevious,
70+
}
71+
72+
#[derive(Debug, Serialize, Deserialize, PartialEq)]
73+
struct AggregatorCapabilitiesPrevious {
74+
pub signed_entity_types: BTreeSet<SignedEntityTypeDiscriminants>,
75+
#[serde(skip_serializing_if = "Option::is_none")]
76+
pub cardano_transactions_prover: Option<CardanoTransactionsProverCapabilities>,
77+
}
78+
79+
fn golden_message_v1() -> AggregatorFeaturesMessagePrevious {
80+
AggregatorFeaturesMessagePrevious {
81+
open_api_version: "0.0.1".to_string(),
82+
documentation_url: "https://example.com".to_string(),
83+
capabilities: AggregatorCapabilitiesPrevious {
84+
signed_entity_types: BTreeSet::from([
85+
SignedEntityTypeDiscriminants::CardanoTransactions,
86+
]),
87+
cardano_transactions_prover: Some(CardanoTransactionsProverCapabilities {
88+
max_hashes_allowed_by_request: 100,
89+
}),
90+
},
91+
}
92+
}
93+
94+
fn golden_message_v2() -> AggregatorFeaturesMessage {
5995
AggregatorFeaturesMessage {
6096
open_api_version: "0.0.1".to_string(),
6197
documentation_url: "https://example.com".to_string(),
@@ -66,6 +102,10 @@ mod tests {
66102
cardano_transactions_prover: Some(CardanoTransactionsProverCapabilities {
67103
max_hashes_allowed_by_request: 100,
68104
}),
105+
cardano_transactions_signing_config: Some(CardanoTransactionsSigningConfig {
106+
security_parameter: BlockNumber(70),
107+
step: BlockNumber(20),
108+
}),
69109
},
70110
}
71111
}
@@ -84,8 +124,30 @@ mod tests {
84124
}
85125
}"#;
86126

127+
let message: AggregatorFeaturesMessagePrevious = serde_json::from_str(json).unwrap();
128+
129+
assert_eq!(golden_message_v1(), message);
130+
}
131+
132+
#[test]
133+
fn test_v2() {
134+
let json = r#"{
135+
"open_api_version": "0.0.1",
136+
"documentation_url": "https://example.com",
137+
"capabilities": {
138+
"signed_entity_types": ["CardanoTransactions"],
139+
"cardano_transactions_prover": {
140+
"max_hashes_allowed_by_request": 100
141+
},
142+
"cardano_transactions_signing_config": {
143+
"security_parameter": 70,
144+
"step": 20
145+
}
146+
}
147+
}"#;
148+
87149
let message: AggregatorFeaturesMessage = serde_json::from_str(json).unwrap();
88150

89-
assert_eq!(golden_message(), message);
151+
assert_eq!(golden_message_v2(), message);
90152
}
91153
}

0 commit comments

Comments
 (0)