Skip to content

Commit 94118ec

Browse files
committed
refactor: move magic ID constants into CardanoNetwork enum and update exports/imports
1 parent 8886fe3 commit 94118ec

File tree

5 files changed

+66
-58
lines changed

5 files changed

+66
-58
lines changed

mithril-client-cli/src/commands/tools/snapshot_converter.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use clap::{Parser, ValueEnum};
1010

1111
use mithril_client::{
1212
MithrilError, MithrilResult,
13-
common::{CardanoNetwork, MagicId, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID},
13+
common::{CardanoNetwork, MagicId},
1414
};
1515

1616
use crate::utils::{
@@ -80,8 +80,8 @@ impl TryFrom<CardanoNetwork> for CardanoNetworkCliArg {
8080
match network {
8181
CardanoNetwork::MainNet => Ok(Self::Mainnet),
8282
CardanoNetwork::TestNet(magic_id) => match magic_id {
83-
PREVIEW_MAGIC_ID => Ok(Self::Preview),
84-
PREPROD_MAGIC_ID => Ok(Self::Preprod),
83+
CardanoNetwork::PREVIEW_MAGIC_ID => Ok(Self::Preview),
84+
CardanoNetwork::PREPROD_MAGIC_ID => Ok(Self::Preprod),
8585
_ => Err(anyhow!(
8686
"Cardano network not supported for ledger state snapshot conversion: {network:?}",
8787
)),
@@ -985,8 +985,6 @@ mod tests {
985985
}
986986

987987
mod detect_cardano_network {
988-
use mithril_client::common::MAINNET_MAGIC_ID;
989-
990988
use super::*;
991989

992990
fn create_protocol_magic_id_file(db_dir: &Path, magic_id: MagicId) -> PathBuf {
@@ -999,7 +997,7 @@ mod tests {
999997
#[test]
1000998
fn detects_mainnet() {
1001999
let db_dir = temp_dir_create!();
1002-
create_protocol_magic_id_file(&db_dir, MAINNET_MAGIC_ID);
1000+
create_protocol_magic_id_file(&db_dir, CardanoNetwork::MAINNET_MAGIC_ID);
10031001

10041002
let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap();
10051003

@@ -1009,7 +1007,7 @@ mod tests {
10091007
#[test]
10101008
fn detects_preprod() {
10111009
let db_dir = temp_dir_create!();
1012-
create_protocol_magic_id_file(&db_dir, PREPROD_MAGIC_ID);
1010+
create_protocol_magic_id_file(&db_dir, CardanoNetwork::PREPROD_MAGIC_ID);
10131011

10141012
let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap();
10151013

@@ -1019,7 +1017,7 @@ mod tests {
10191017
#[test]
10201018
fn detects_preview() {
10211019
let db_dir = temp_dir_create!();
1022-
create_protocol_magic_id_file(&db_dir, PREVIEW_MAGIC_ID);
1020+
create_protocol_magic_id_file(&db_dir, CardanoNetwork::PREVIEW_MAGIC_ID);
10231021

10241022
let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap();
10251023

mithril-client/src/type_alias.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ pub mod common {
7070
pub use mithril_common::entities::{
7171
AncillaryLocation, BlockHash, BlockNumber, CardanoDbBeacon, CardanoNetwork, ChainPoint,
7272
CompressionAlgorithm, DigestLocation, Epoch, ImmutableFileNumber, ImmutablesLocation,
73-
MAINNET_MAGIC_ID, MagicId, MultiFilesUri, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID,
74-
ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, SignedEntityType, SlotNumber,
75-
StakeDistribution, SupportedEra, TemplateUri, TransactionHash,
73+
MagicId, MultiFilesUri, ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters,
74+
SignedEntityType, SlotNumber, StakeDistribution, SupportedEra, TemplateUri,
75+
TransactionHash,
7676
};
7777
pub use mithril_common::messages::{
7878
AncillaryMessagePart, DigestsMessagePart, ImmutablesMessagePart,

mithril-common/src/entities/cardano_network.rs

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@ use thiserror::Error;
44

55
use crate::{MagicId, StdResult};
66

7-
/// Mainnet magic ID
8-
pub const MAINNET_MAGIC_ID: MagicId = 764824073;
9-
/// Preprod magic ID
10-
pub const PREPROD_MAGIC_ID: MagicId = 1;
11-
/// Preview magic ID
12-
pub const PREVIEW_MAGIC_ID: MagicId = 2;
13-
/// Devnet magic ID
14-
pub(crate) const DEVNET_MAGIC_ID: MagicId = 42;
15-
167
#[derive(Error, Debug)]
178
pub enum CardanoNetworkError {
189
#[error("parse from code error: '{0}'")]
@@ -31,16 +22,25 @@ pub enum CardanoNetwork {
3122
}
3223

3324
impl CardanoNetwork {
25+
/// Mainnet magic ID
26+
pub const MAINNET_MAGIC_ID: MagicId = 764824073;
27+
/// Preprod magic ID
28+
pub const PREPROD_MAGIC_ID: MagicId = 1;
29+
/// Preview magic ID
30+
pub const PREVIEW_MAGIC_ID: MagicId = 2;
31+
/// Devnet magic ID
32+
pub(crate) const DEVNET_MAGIC_ID: MagicId = 42;
33+
3434
/// Instantiates a CardanoNetwork from its code and magic id
3535
pub fn from_code(
3636
network_code: String,
3737
network_magic: Option<u64>,
3838
) -> Result<CardanoNetwork, CardanoNetworkError> {
3939
match network_code.to_lowercase().as_str() {
4040
"mainnet" => Ok(CardanoNetwork::MainNet),
41-
"preview" => Ok(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)),
42-
"preprod" => Ok(CardanoNetwork::TestNet(PREPROD_MAGIC_ID)),
43-
"devnet" => Ok(CardanoNetwork::TestNet(DEVNET_MAGIC_ID)),
41+
"preview" => Ok(CardanoNetwork::TestNet(Self::PREVIEW_MAGIC_ID)),
42+
"preprod" => Ok(CardanoNetwork::TestNet(Self::PREPROD_MAGIC_ID)),
43+
"devnet" => Ok(CardanoNetwork::TestNet(Self::DEVNET_MAGIC_ID)),
4444
"private" => {
4545
if let Some(magic) = network_magic {
4646
Ok(CardanoNetwork::TestNet(magic))
@@ -59,7 +59,7 @@ impl CardanoNetwork {
5959
/// Returns the magic ID of the network
6060
pub fn magic_id(&self) -> MagicId {
6161
match *self {
62-
CardanoNetwork::MainNet => MAINNET_MAGIC_ID,
62+
CardanoNetwork::MainNet => Self::MAINNET_MAGIC_ID,
6363
CardanoNetwork::TestNet(magic_id) => magic_id,
6464
}
6565
}
@@ -68,7 +68,7 @@ impl CardanoNetwork {
6868
pub fn compute_allow_unparsable_block(&self, allow_unparsable_block: bool) -> StdResult<bool> {
6969
let allow_unparsable_block = match self {
7070
CardanoNetwork::MainNet => false,
71-
CardanoNetwork::TestNet(id) if *id == PREPROD_MAGIC_ID => false,
71+
CardanoNetwork::TestNet(id) if *id == Self::PREPROD_MAGIC_ID => false,
7272
_ => allow_unparsable_block,
7373
};
7474

@@ -81,9 +81,9 @@ impl Display for CardanoNetwork {
8181
match *self {
8282
CardanoNetwork::MainNet => write!(f, "mainnet"),
8383
CardanoNetwork::TestNet(magic_id) => match magic_id {
84-
PREVIEW_MAGIC_ID => write!(f, "preview"),
85-
PREPROD_MAGIC_ID => write!(f, "preprod"),
86-
DEVNET_MAGIC_ID => write!(f, "devnet"),
84+
Self::PREVIEW_MAGIC_ID => write!(f, "preview"),
85+
Self::PREPROD_MAGIC_ID => write!(f, "preprod"),
86+
Self::DEVNET_MAGIC_ID => write!(f, "devnet"),
8787
_ => write!(f, "private"),
8888
},
8989
}
@@ -105,7 +105,7 @@ impl From<&CardanoNetwork> for String {
105105
impl From<MagicId> for CardanoNetwork {
106106
fn from(magic_id: MagicId) -> Self {
107107
match magic_id {
108-
MAINNET_MAGIC_ID => Self::MainNet,
108+
Self::MAINNET_MAGIC_ID => Self::MainNet,
109109
_ => Self::TestNet(magic_id),
110110
}
111111
}
@@ -127,27 +127,27 @@ mod tests {
127127
);
128128
assert_eq!(
129129
CardanoNetwork::from_code("preview".to_string(), None).unwrap(),
130-
CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)
130+
CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID)
131131
);
132132
assert_eq!(
133133
CardanoNetwork::from_code("preview".to_string(), Some(123)).unwrap(),
134-
CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)
134+
CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID)
135135
);
136136
assert_eq!(
137137
CardanoNetwork::from_code("preprod".to_string(), None).unwrap(),
138-
CardanoNetwork::TestNet(PREPROD_MAGIC_ID)
138+
CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID)
139139
);
140140
assert_eq!(
141141
CardanoNetwork::from_code("preprod".to_string(), Some(123)).unwrap(),
142-
CardanoNetwork::TestNet(PREPROD_MAGIC_ID)
142+
CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID)
143143
);
144144
assert_eq!(
145145
CardanoNetwork::from_code("devnet".to_string(), None).unwrap(),
146-
CardanoNetwork::TestNet(DEVNET_MAGIC_ID)
146+
CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID)
147147
);
148148
assert_eq!(
149149
CardanoNetwork::from_code("devnet".to_string(), Some(123)).unwrap(),
150-
CardanoNetwork::TestNet(DEVNET_MAGIC_ID)
150+
CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID)
151151
);
152152
assert_eq!(
153153
CardanoNetwork::from_code("private".to_string(), Some(123)).unwrap(),
@@ -166,12 +166,12 @@ mod tests {
166166
CardanoNetwork::MainNet.compute_allow_unparsable_block(true).unwrap();
167167
assert!(!allow_unparsable_block);
168168

169-
let allow_unparsable_block = CardanoNetwork::TestNet(PREPROD_MAGIC_ID)
169+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID)
170170
.compute_allow_unparsable_block(false)
171171
.unwrap();
172172
assert!(!allow_unparsable_block);
173173

174-
let allow_unparsable_block = CardanoNetwork::TestNet(PREPROD_MAGIC_ID)
174+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID)
175175
.compute_allow_unparsable_block(true)
176176
.unwrap();
177177
assert!(!allow_unparsable_block);
@@ -180,22 +180,22 @@ mod tests {
180180
#[test]
181181
fn compute_allow_unparsable_block_should_return_value_passed_in_parameter_on_all_networks_other_than_mainnet_and_preprod()
182182
{
183-
let allow_unparsable_block = CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)
183+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID)
184184
.compute_allow_unparsable_block(false)
185185
.unwrap();
186186
assert!(!allow_unparsable_block);
187187

188-
let allow_unparsable_block = CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)
188+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID)
189189
.compute_allow_unparsable_block(true)
190190
.unwrap();
191191
assert!(allow_unparsable_block);
192192

193-
let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID)
193+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID)
194194
.compute_allow_unparsable_block(false)
195195
.unwrap();
196196
assert!(!allow_unparsable_block);
197197

198-
let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID)
198+
let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID)
199199
.compute_allow_unparsable_block(true)
200200
.unwrap();
201201
assert!(allow_unparsable_block);
@@ -220,9 +220,18 @@ mod tests {
220220
}
221221

222222
assert_all_conversions_eq(CardanoNetwork::MainNet, "mainnet");
223-
assert_all_conversions_eq(CardanoNetwork::TestNet(DEVNET_MAGIC_ID), "devnet");
224-
assert_all_conversions_eq(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), "preview");
225-
assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod");
223+
assert_all_conversions_eq(
224+
CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID),
225+
"devnet",
226+
);
227+
assert_all_conversions_eq(
228+
CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID),
229+
"preview",
230+
);
231+
assert_all_conversions_eq(
232+
CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID),
233+
"preprod",
234+
);
226235
assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private");
227236
}
228237

@@ -234,18 +243,21 @@ mod tests {
234243
assert_eq!(network.magic_id(), magic_id);
235244
}
236245

237-
assert_magic_id_conversion_roundtrip(MAINNET_MAGIC_ID, CardanoNetwork::MainNet);
238246
assert_magic_id_conversion_roundtrip(
239-
PREVIEW_MAGIC_ID,
240-
CardanoNetwork::TestNet(PREVIEW_MAGIC_ID),
247+
CardanoNetwork::MAINNET_MAGIC_ID,
248+
CardanoNetwork::MainNet,
249+
);
250+
assert_magic_id_conversion_roundtrip(
251+
CardanoNetwork::PREVIEW_MAGIC_ID,
252+
CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID),
241253
);
242254
assert_magic_id_conversion_roundtrip(
243-
PREPROD_MAGIC_ID,
244-
CardanoNetwork::TestNet(PREPROD_MAGIC_ID),
255+
CardanoNetwork::PREPROD_MAGIC_ID,
256+
CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID),
245257
);
246258
assert_magic_id_conversion_roundtrip(
247-
DEVNET_MAGIC_ID,
248-
CardanoNetwork::TestNet(DEVNET_MAGIC_ID),
259+
CardanoNetwork::DEVNET_MAGIC_ID,
260+
CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID),
249261
);
250262
assert_magic_id_conversion_roundtrip(123456, CardanoNetwork::TestNet(123456));
251263
}

mithril-common/src/entities/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ pub use cardano_database::{
4040
ImmutablesLocations,
4141
};
4242
pub use cardano_db_beacon::CardanoDbBeacon;
43-
pub(crate) use cardano_network::DEVNET_MAGIC_ID;
44-
pub use cardano_network::{CardanoNetwork, MAINNET_MAGIC_ID, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID};
43+
pub use cardano_network::CardanoNetwork;
4544
pub use cardano_stake_distribution::CardanoStakeDistribution;
4645
pub use cardano_transaction::{CardanoTransaction, TransactionHash};
4746
pub use cardano_transactions_set_proof::CardanoTransactionsSetProof;

mithril-common/src/test_utils/fake_data.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,17 @@ use crate::CardanoNetwork;
77
use crate::crypto_helper::{self, ProtocolMultiSignature};
88
use crate::entities::{
99
self, AncillaryLocations, BlockNumber, CardanoDatabaseSnapshotArtifactData,
10-
CertificateMetadata, CertificateSignature, CompressionAlgorithm, DEVNET_MAGIC_ID,
11-
DigestsLocations, Epoch, ImmutablesLocations, LotteryIndex, ProtocolMessage,
12-
ProtocolMessagePartKey, SignedEntityType, SingleSignature, SlotNumber, StakeDistribution,
13-
StakeDistributionParty,
10+
CertificateMetadata, CertificateSignature, CompressionAlgorithm, DigestsLocations, Epoch,
11+
ImmutablesLocations, LotteryIndex, ProtocolMessage, ProtocolMessagePartKey, SignedEntityType,
12+
SingleSignature, SlotNumber, StakeDistribution, StakeDistributionParty,
1413
};
1514
use crate::test_utils::MithrilFixtureBuilder;
1615

1716
use super::fake_keys;
1817

1918
/// Fake network
2019
pub fn network() -> crate::CardanoNetwork {
21-
crate::CardanoNetwork::TestNet(DEVNET_MAGIC_ID)
20+
crate::CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID)
2221
}
2322

2423
/// Fake Beacon

0 commit comments

Comments
 (0)