From 5c3a0e87a867e40546f9065c81e574d5ff7570f8 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:35:54 +0200 Subject: [PATCH 01/10] feat(client-lib): expose the `CardanoNetwork` from the client library --- mithril-client/src/type_alias.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mithril-client/src/type_alias.rs b/mithril-client/src/type_alias.rs index bd037201417..8c2b0726a4a 100644 --- a/mithril-client/src/type_alias.rs +++ b/mithril-client/src/type_alias.rs @@ -68,7 +68,7 @@ pub use mithril_common::messages::CardanoStakeDistributionListItemMessage as Car pub mod common { pub use mithril_common::crypto_helper::MKProof; pub use mithril_common::entities::{ - AncillaryLocation, BlockHash, BlockNumber, CardanoDbBeacon, ChainPoint, + AncillaryLocation, BlockHash, BlockNumber, CardanoDbBeacon, CardanoNetwork, ChainPoint, CompressionAlgorithm, DigestLocation, Epoch, ImmutableFileNumber, ImmutablesLocation, MultiFilesUri, ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, SignedEntityType, SlotNumber, StakeDistribution, SupportedEra, TemplateUri, From 32ea3f1117b1c6bc479a6da20f483891f86c8841 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:40:22 +0200 Subject: [PATCH 02/10] refactor: remove `TESTNET_MAGIC_ID` constant which is not used anymore --- mithril-client/src/utils/bootstrap_files.rs | 16 -------------- .../src/entities/cardano_network.rs | 22 ------------------- 2 files changed, 38 deletions(-) diff --git a/mithril-client/src/utils/bootstrap_files.rs b/mithril-client/src/utils/bootstrap_files.rs index 62f8050ed14..574887544c8 100644 --- a/mithril-client/src/utils/bootstrap_files.rs +++ b/mithril-client/src/utils/bootstrap_files.rs @@ -84,22 +84,6 @@ mod test { assert!(db_dir.join(CLEAN_FILE_NAME).exists()); } - #[test] - fn create_bootstrap_node_files_creates_protocol_magic_id_and_clean_files_for_testnet() { - let db_dir = temp_dir!().join("db"); - std::fs::create_dir_all(&db_dir).unwrap(); - let network = CardanoNetwork::from_code("testnet".to_string(), None).unwrap(); - let logger = slog::Logger::root(slog::Discard, o!()); - - create_bootstrap_node_files(&logger, &db_dir, &network.to_string()).unwrap(); - - let file_content = - std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); - assert_eq!(file_content, network.code().to_string()); - - assert!(db_dir.join(CLEAN_FILE_NAME).exists()); - } - #[test] fn create_bootstrap_node_files_does_not_create_protocol_magic_id_file_and_create_clean_file_for_devnet() { diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index d1369280119..2aa3bb437d5 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -5,7 +5,6 @@ use thiserror::Error; use crate::{MagicId, StdResult}; const MAINNET_MAGIC_ID: MagicId = 764824073; -const TESTNET_MAGIC_ID: MagicId = 1097911063; const PREPROD_MAGIC_ID: MagicId = 1; const PREVIEW_MAGIC_ID: MagicId = 2; @@ -37,7 +36,6 @@ impl CardanoNetwork { ) -> Result { match network_code.to_lowercase().as_str() { "mainnet" => Ok(CardanoNetwork::MainNet), - "testnet" => Ok(CardanoNetwork::TestNet(TESTNET_MAGIC_ID)), "preview" => Ok(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)), "preprod" => Ok(CardanoNetwork::TestNet(PREPROD_MAGIC_ID)), "private" => { @@ -91,7 +89,6 @@ impl Display for CardanoNetwork { CardanoNetwork::MainNet => write!(f, "mainnet"), CardanoNetwork::DevNet(_) => write!(f, "devnet"), CardanoNetwork::TestNet(magic_id) => match magic_id { - TESTNET_MAGIC_ID => write!(f, "testnet"), PREVIEW_MAGIC_ID => write!(f, "preview"), PREPROD_MAGIC_ID => write!(f, "preprod"), _ => write!(f, "private"), @@ -142,14 +139,6 @@ mod tests { CardanoNetwork::from_code("preprod".to_string(), Some(123)).unwrap(), CardanoNetwork::TestNet(PREPROD_MAGIC_ID) ); - assert_eq!( - CardanoNetwork::from_code("testnet".to_string(), None).unwrap(), - CardanoNetwork::TestNet(TESTNET_MAGIC_ID) - ); - assert_eq!( - CardanoNetwork::from_code("testnet".to_string(), Some(123)).unwrap(), - CardanoNetwork::TestNet(TESTNET_MAGIC_ID) - ); assert_eq!( CardanoNetwork::from_code("private".to_string(), Some(123)).unwrap(), CardanoNetwork::TestNet(123) @@ -191,16 +180,6 @@ mod tests { .unwrap(); assert!(allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(TESTNET_MAGIC_ID) - .compute_allow_unparsable_block(false) - .unwrap(); - assert!(!allow_unparsable_block); - - let allow_unparsable_block = CardanoNetwork::TestNet(TESTNET_MAGIC_ID) - .compute_allow_unparsable_block(true) - .unwrap(); - assert!(allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::DevNet(123) .compute_allow_unparsable_block(false) .unwrap(); @@ -222,7 +201,6 @@ mod tests { assert_all_conversions_eq(CardanoNetwork::MainNet, "mainnet"); assert_all_conversions_eq(CardanoNetwork::DevNet(123456), "devnet"); - assert_all_conversions_eq(CardanoNetwork::TestNet(TESTNET_MAGIC_ID), "testnet"); assert_all_conversions_eq(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), "preview"); assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod"); assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private"); From 3e83f53108b31a07e7522ff94e74ccabf514bc90 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Wed, 16 Jul 2025 16:47:39 +0200 Subject: [PATCH 03/10] refactor: merge `DevNet` into `TestNet` variant and identify devnet with magic ID `42` --- .../src/chain_observer/cli_observer.rs | 25 ----------- .../src/artifact_builder/cardano_database.rs | 2 +- .../cardano_database_artifacts/ancillary.rs | 18 ++++---- .../cardano_database_artifacts/digest.rs | 16 +++---- .../src/http_server/routes/router.rs | 2 +- mithril-client/src/utils/bootstrap_files.rs | 21 ++++++++- .../src/entities/cardano_database.rs | 2 +- .../src/entities/cardano_network.rs | 43 +++++++++++-------- mithril-common/src/entities/mod.rs | 1 + mithril-common/src/test_utils/fake_data.rs | 11 ++--- .../src/mithril/aggregator.rs | 2 +- .../src/mithril/infrastructure.rs | 2 +- 12 files changed, 73 insertions(+), 72 deletions(-) diff --git a/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/cli_observer.rs b/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/cli_observer.rs index 0bfa0dfab04..3b2124aa627 100644 --- a/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/cli_observer.rs +++ b/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/cli_observer.rs @@ -167,11 +167,6 @@ impl CardanoCliRunner { fn post_config_command<'a>(&'a self, command: &'a mut Command) -> &'a mut Command { match self.network { CardanoNetwork::MainNet => command.arg("--mainnet"), - CardanoNetwork::DevNet(magic) => command.args(vec![ - "--cardano-mode", - "--testnet-magic", - &magic.to_string(), - ]), CardanoNetwork::TestNet(magic) => { command.args(vec!["--testnet-magic", &magic.to_string()]) } @@ -638,26 +633,6 @@ mod tests { ); } - #[tokio::test] - async fn test_cli_devnet_runner() { - let runner = CardanoCliRunner::new( - PathBuf::from("cardano-cli"), - PathBuf::from("/tmp/whatever.sock"), - CardanoNetwork::DevNet(25), - ); - - assert_cli_command!( - runner.command_for_epoch(), - r#""cardano-cli" "latest" "query" "tip" "--cardano-mode" "--testnet-magic" "25""#, - envs: vec![(OsStr::new("CARDANO_NODE_SOCKET_PATH"), Some(OsStr::new("/tmp/whatever.sock")))] - ); - assert_cli_command!( - runner.command_for_stake_distribution(), - r#""cardano-cli" "latest" "query" "stake-distribution" "--cardano-mode" "--testnet-magic" "25""#, - envs: vec![(OsStr::new("CARDANO_NODE_SOCKET_PATH"), Some(OsStr::new("/tmp/whatever.sock")))] - ); - } - #[tokio::test] async fn test_cli_mainnet_runner() { let runner = CardanoCliRunner::new( diff --git a/mithril-aggregator/src/artifact_builder/cardano_database.rs b/mithril-aggregator/src/artifact_builder/cardano_database.rs index 7e6dfc4be3c..cd4e66cf8b6 100644 --- a/mithril-aggregator/src/artifact_builder/cardano_database.rs +++ b/mithril-aggregator/src/artifact_builder/cardano_database.rs @@ -161,7 +161,7 @@ mod tests { let test_dir = get_test_directory("should_compute_valid_artifact"); let beacon = CardanoDbBeacon::new(123, 3); - let network = CardanoNetwork::DevNet(123); + let network = CardanoNetwork::TestNet(123); let immutable_trio_file_size = 777; let ledger_file_size = 6666; let volatile_file_size = 99; diff --git a/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs b/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs index b066f85edc4..b9792890deb 100644 --- a/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs +++ b/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs @@ -266,7 +266,7 @@ mod tests { let result = AncillaryArtifactBuilder::new( vec![], Arc::new(DumbSnapshotter::default()), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ); @@ -284,7 +284,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(DumbSnapshotter::default()), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), logger, ) .unwrap(); @@ -301,7 +301,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(DumbSnapshotter::default()), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -330,7 +330,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( uploaders, Arc::new(DumbSnapshotter::default()), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -370,7 +370,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( uploaders, Arc::new(DumbSnapshotter::new(CompressionAlgorithm::Gzip)), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -417,7 +417,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(DumbSnapshotter::new(CompressionAlgorithm::Gzip)), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -442,7 +442,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(DumbSnapshotter::default()), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -467,7 +467,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(snapshotter), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); @@ -501,7 +501,7 @@ mod tests { let builder = AncillaryArtifactBuilder::new( vec![Arc::new(uploader)], Arc::new(snapshotter), - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), TestLogger::stdout(), ) .unwrap(); diff --git a/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs b/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs index 0b7abb47af3..7841e4f5758 100644 --- a/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs +++ b/mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs @@ -388,7 +388,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), temp_dir, Arc::new(immutable_file_digest_mapper), TestLogger::stdout(), @@ -421,7 +421,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), temp_dir, Arc::new(immutable_file_digest_mapper), TestLogger::stdout(), @@ -455,7 +455,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), PathBuf::from("/tmp/whatever"), Arc::new(MockImmutableFileDigestMapper::new()), logger, @@ -480,7 +480,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), PathBuf::from("/tmp/whatever"), Arc::new(MockImmutableFileDigestMapper::new()), TestLogger::stdout(), @@ -513,7 +513,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), PathBuf::from("/tmp/whatever"), Arc::new(MockImmutableFileDigestMapper::new()), TestLogger::stdout(), @@ -553,7 +553,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), PathBuf::from("/tmp/whatever"), Arc::new(MockImmutableFileDigestMapper::new()), TestLogger::stdout(), @@ -601,7 +601,7 @@ mod tests { target_location: temp_dir.clone(), compression_algorithm: CompressionAlgorithm::Gzip, }, - CardanoNetwork::DevNet(123), + CardanoNetwork::TestNet(123), temp_dir, Arc::new(immutable_file_digest_mapper), TestLogger::stdout(), @@ -633,7 +633,7 @@ mod tests { let compression_algorithm = CompressionAlgorithm::Gzip; let beacon = CardanoDbBeacon::new(3, 456); - let network = CardanoNetwork::DevNet(24); + let network = CardanoNetwork::TestNet(24); let builder = DigestArtifactBuilder::new( SanitizedUrlWithTrailingSlash::parse("https://aggregator/").unwrap(), diff --git a/mithril-aggregator/src/http_server/routes/router.rs b/mithril-aggregator/src/http_server/routes/router.rs index 2156aa47d69..f343160afdf 100644 --- a/mithril-aggregator/src/http_server/routes/router.rs +++ b/mithril-aggregator/src/http_server/routes/router.rs @@ -39,7 +39,7 @@ pub struct RouterConfig { impl RouterConfig { pub fn dummy() -> Self { Self { - network: CardanoNetwork::DevNet(87), + network: CardanoNetwork::TestNet(87), server_url: SanitizedUrlWithTrailingSlash::parse("http://0.0.0.0:8000/").unwrap(), allowed_discriminants: BTreeSet::from([ SignedEntityTypeDiscriminants::MithrilStakeDistribution, diff --git a/mithril-client/src/utils/bootstrap_files.rs b/mithril-client/src/utils/bootstrap_files.rs index 574887544c8..854fe871e99 100644 --- a/mithril-client/src/utils/bootstrap_files.rs +++ b/mithril-client/src/utils/bootstrap_files.rs @@ -85,8 +85,8 @@ mod test { } #[test] - fn create_bootstrap_node_files_does_not_create_protocol_magic_id_file_and_create_clean_file_for_devnet() - { + fn create_bootstrap_node_files_creates_protocol_magic_id_file_and_create_clean_file_for_devnet() + { let db_dir = temp_dir!().join("db"); std::fs::create_dir_all(&db_dir).unwrap(); let network = CardanoNetwork::from_code("devnet".to_string(), Some(123)).unwrap(); @@ -94,6 +94,23 @@ mod test { create_bootstrap_node_files(&logger, &db_dir, &network.to_string()).unwrap(); + let file_content = + std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); + assert_eq!(file_content, network.code().to_string()); + + assert!(db_dir.join(CLEAN_FILE_NAME).exists()); + } + + #[test] + fn create_bootstrap_node_files_does_not_create_protocol_magic_id_file_and_create_clean_file_for_private_network() + { + let db_dir = temp_dir!().join("db"); + std::fs::create_dir_all(&db_dir).unwrap(); + let network = CardanoNetwork::from_code("private".to_string(), Some(123)).unwrap(); + let logger = slog::Logger::root(slog::Discard, o!()); + + create_bootstrap_node_files(&logger, &db_dir, &network.to_string()).unwrap(); + assert!(!db_dir.join(PROTOCOL_MAGIC_ID_FILENAME).exists()); assert!(db_dir.join(CLEAN_FILE_NAME).exists()); diff --git a/mithril-common/src/entities/cardano_database.rs b/mithril-common/src/entities/cardano_database.rs index 2d78a5ce70d..0a2ba932747 100644 --- a/mithril-common/src/entities/cardano_database.rs +++ b/mithril-common/src/entities/cardano_database.rs @@ -186,7 +186,7 @@ mod tests { fn dummy() -> CardanoDatabaseSnapshot { CardanoDatabaseSnapshot::new( "mk-root-1111111111".to_string(), - CardanoNetwork::DevNet(87), + CardanoNetwork::TestNet(87), CardanoDbBeacon::new(2222, 55555), CardanoDatabaseSnapshotArtifactData { total_db_size_uncompressed: 0, diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index 2aa3bb437d5..13c84c02ef0 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -7,6 +7,7 @@ use crate::{MagicId, StdResult}; const MAINNET_MAGIC_ID: MagicId = 764824073; const PREPROD_MAGIC_ID: MagicId = 1; const PREVIEW_MAGIC_ID: MagicId = 2; +pub(crate) const DEVNET_MAGIC_ID: MagicId = 42; #[derive(Error, Debug)] pub enum CardanoNetworkError { @@ -21,11 +22,8 @@ pub enum CardanoNetwork { /// The Cardano mainnet network MainNet, - /// A Cardano test network (testnet, preview, or preprod) + /// A Cardano test network (preview, preprod or private devnet) TestNet(MagicId), - - /// A Cardano private devnet - DevNet(MagicId), } impl CardanoNetwork { @@ -38,6 +36,7 @@ impl CardanoNetwork { "mainnet" => Ok(CardanoNetwork::MainNet), "preview" => Ok(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)), "preprod" => Ok(CardanoNetwork::TestNet(PREPROD_MAGIC_ID)), + "devnet" => Ok(CardanoNetwork::TestNet(DEVNET_MAGIC_ID)), "private" => { if let Some(magic) = network_magic { Ok(CardanoNetwork::TestNet(magic)) @@ -47,15 +46,6 @@ impl CardanoNetwork { )) } } - "devnet" => { - if let Some(magic) = network_magic { - Ok(CardanoNetwork::DevNet(magic)) - } else { - Err(CardanoNetworkError::ParseFromCode( - "no NETWORK MAGIC number given for devnet network".to_string(), - )) - } - } what => Err(CardanoNetworkError::ParseFromCode(format!( "could not parse network '{what}', the only recognized networks are: mainnet, devnet, testnet, preview, preprod and private" ))), @@ -66,7 +56,6 @@ impl CardanoNetwork { pub fn code(&self) -> MagicId { match *self { CardanoNetwork::MainNet => MAINNET_MAGIC_ID, - CardanoNetwork::DevNet(magic_id) => magic_id, CardanoNetwork::TestNet(magic_id) => magic_id, } } @@ -87,10 +76,10 @@ impl Display for CardanoNetwork { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match *self { CardanoNetwork::MainNet => write!(f, "mainnet"), - CardanoNetwork::DevNet(_) => write!(f, "devnet"), CardanoNetwork::TestNet(magic_id) => match magic_id { PREVIEW_MAGIC_ID => write!(f, "preview"), PREPROD_MAGIC_ID => write!(f, "preprod"), + DEVNET_MAGIC_ID => write!(f, "devnet"), _ => write!(f, "private"), }, } @@ -139,6 +128,14 @@ mod tests { CardanoNetwork::from_code("preprod".to_string(), Some(123)).unwrap(), CardanoNetwork::TestNet(PREPROD_MAGIC_ID) ); + assert_eq!( + CardanoNetwork::from_code("devnet".to_string(), None).unwrap(), + CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + ); + assert_eq!( + CardanoNetwork::from_code("devnet".to_string(), Some(123)).unwrap(), + CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + ); assert_eq!( CardanoNetwork::from_code("private".to_string(), Some(123)).unwrap(), CardanoNetwork::TestNet(123) @@ -180,12 +177,22 @@ mod tests { .unwrap(); assert!(allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::DevNet(123) + let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + .compute_allow_unparsable_block(false) + .unwrap(); + assert!(!allow_unparsable_block); + + let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + .compute_allow_unparsable_block(true) + .unwrap(); + assert!(allow_unparsable_block); + + let allow_unparsable_block = CardanoNetwork::TestNet(123) .compute_allow_unparsable_block(false) .unwrap(); assert!(!allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::DevNet(123) + let allow_unparsable_block = CardanoNetwork::TestNet(123) .compute_allow_unparsable_block(true) .unwrap(); assert!(allow_unparsable_block); @@ -200,7 +207,7 @@ mod tests { } assert_all_conversions_eq(CardanoNetwork::MainNet, "mainnet"); - assert_all_conversions_eq(CardanoNetwork::DevNet(123456), "devnet"); + assert_all_conversions_eq(CardanoNetwork::TestNet(DEVNET_MAGIC_ID), "devnet"); assert_all_conversions_eq(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), "preview"); assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod"); assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private"); diff --git a/mithril-common/src/entities/mod.rs b/mithril-common/src/entities/mod.rs index f088bf2cfca..d3539ad3747 100644 --- a/mithril-common/src/entities/mod.rs +++ b/mithril-common/src/entities/mod.rs @@ -41,6 +41,7 @@ pub use cardano_database::{ }; pub use cardano_db_beacon::CardanoDbBeacon; pub use cardano_network::CardanoNetwork; +pub(crate) use cardano_network::DEVNET_MAGIC_ID; pub use cardano_stake_distribution::CardanoStakeDistribution; pub use cardano_transaction::{CardanoTransaction, TransactionHash}; pub use cardano_transactions_set_proof::CardanoTransactionsSetProof; diff --git a/mithril-common/src/test_utils/fake_data.rs b/mithril-common/src/test_utils/fake_data.rs index fd3d583a76a..9342d5df742 100644 --- a/mithril-common/src/test_utils/fake_data.rs +++ b/mithril-common/src/test_utils/fake_data.rs @@ -7,9 +7,10 @@ use crate::CardanoNetwork; use crate::crypto_helper::{self, ProtocolMultiSignature}; use crate::entities::{ self, AncillaryLocations, BlockNumber, CardanoDatabaseSnapshotArtifactData, - CertificateMetadata, CertificateSignature, CompressionAlgorithm, DigestsLocations, Epoch, - ImmutablesLocations, LotteryIndex, ProtocolMessage, ProtocolMessagePartKey, SignedEntityType, - SingleSignature, SlotNumber, StakeDistribution, StakeDistributionParty, + CertificateMetadata, CertificateSignature, CompressionAlgorithm, DEVNET_MAGIC_ID, + DigestsLocations, Epoch, ImmutablesLocations, LotteryIndex, ProtocolMessage, + ProtocolMessagePartKey, SignedEntityType, SingleSignature, SlotNumber, StakeDistribution, + StakeDistributionParty, }; use crate::test_utils::MithrilFixtureBuilder; @@ -17,7 +18,7 @@ use super::fake_keys; /// Fake network pub fn network() -> crate::CardanoNetwork { - crate::CardanoNetwork::DevNet(10) + crate::CardanoNetwork::TestNet(DEVNET_MAGIC_ID) } /// Fake Beacon @@ -269,7 +270,7 @@ pub fn cardano_database_snapshots(total: u64) -> Vec Date: Wed, 16 Jul 2025 17:06:01 +0200 Subject: [PATCH 04/10] refactor: remove unnecessary `--cardano-mode` flag from `cardano-cli` query scripts --- .../mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh | 1 - mithril-test-lab/mithril-devnet/mkfiles/mkfiles-pools.sh | 1 - mithril-test-lab/mithril-devnet/mkfiles/mkfiles-query.sh | 4 ---- mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh | 6 +++--- mithril-test-lab/mithril-devnet/query-cardano.sh | 4 ---- 5 files changed, 3 insertions(+), 13 deletions(-) diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh index bba340175da..731f250cb46 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh @@ -12,7 +12,6 @@ echo ">>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" # Get the current epoch CURRENT_EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip \\ - --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq .epoch) echo ">>>> Current Epoch: \${CURRENT_EPOCH}" diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-pools.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-pools.sh index 1f38796e6f8..4d85acd46fa 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-pools.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-pools.sh @@ -3,7 +3,6 @@ cat >> pools.sh <> query-cardano.sh <> Query chain tip" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip \\ - --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq . echo echo ">> Query whole utxo" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query utxo \\ - --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} \\ --whole-utxo echo echo ">> Query stake pools" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query stake-pools \\ - --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} echo echo ">> Query stake distribution" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query stake-snapshot --all-stake-pools \\ - --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq . echo diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh index 8fe200fcb7b..63890b70c29 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh @@ -64,7 +64,7 @@ CARDANO_ACTIVATION_WAIT_ROUNDS=1 CARDANO_ACTIVATION_WAIT_ROUND_DELAY=2 while true do - EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) + EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) if [ "\$EPOCH" != "" ] ; then echo ">>>> Cardano network is ready!" break @@ -165,10 +165,10 @@ done cat >> start-mithril.sh <> Wait for Mithril signers to be registered" -EPOCH_NOW=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) +EPOCH_NOW=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) while true do - EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) + EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI $CARDANO_CLI_ERA query tip --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) EPOCH_DELTA=\$(( \$EPOCH - \$EPOCH_NOW )) if [ \$EPOCH_DELTA -ge 2 ] ; then echo ">>>> Ready!" diff --git a/mithril-test-lab/mithril-devnet/query-cardano.sh b/mithril-test-lab/mithril-devnet/query-cardano.sh index a97a88647db..6ede054860e 100644 --- a/mithril-test-lab/mithril-devnet/query-cardano.sh +++ b/mithril-test-lab/mithril-devnet/query-cardano.sh @@ -2,26 +2,22 @@ echo ">> Query chain tip" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli latest query tip \ - --cardano-mode \ --testnet-magic 42 | jq . echo echo ">> Query whole utxo" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli latest query utxo \ - --cardano-mode \ --testnet-magic 42 \ --whole-utxo echo echo ">> Query stake pools" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli latest query stake-pools \ - --cardano-mode \ --testnet-magic 42 echo echo ">> Query stake distribution" CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli latest query stake-snapshot --all-stake-pools \ - --cardano-mode \ --testnet-magic 42 | jq . echo From 523091be7e60d58ed4f1500307ddb0a385df593b Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:55:37 +0200 Subject: [PATCH 05/10] feat(common): implement idiomatic conversion from `MagicId` to `CardanoNetwork` --- .../src/entities/cardano_network.rs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index 13c84c02ef0..57b6847cac9 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -98,6 +98,15 @@ impl From<&CardanoNetwork> for String { } } +impl From for CardanoNetwork { + fn from(magic_id: MagicId) -> Self { + match magic_id { + MAINNET_MAGIC_ID => Self::MainNet, + _ => Self::TestNet(magic_id), + } + } +} + #[cfg(test)] mod tests { use super::*; @@ -212,4 +221,28 @@ mod tests { assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod"); assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private"); } + + #[test] + fn cardano_network_from_magic_id_roundtrip() { + fn assert_magic_id_conversion_roundtrip(magic_id: MagicId, expected: CardanoNetwork) { + let network = CardanoNetwork::from(magic_id); + assert_eq!(network, expected); + assert_eq!(network.code(), magic_id); + } + + assert_magic_id_conversion_roundtrip(MAINNET_MAGIC_ID, CardanoNetwork::MainNet); + assert_magic_id_conversion_roundtrip( + PREVIEW_MAGIC_ID, + CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), + ); + assert_magic_id_conversion_roundtrip( + PREPROD_MAGIC_ID, + CardanoNetwork::TestNet(PREPROD_MAGIC_ID), + ); + assert_magic_id_conversion_roundtrip( + DEVNET_MAGIC_ID, + CardanoNetwork::TestNet(DEVNET_MAGIC_ID), + ); + assert_magic_id_conversion_roundtrip(123456, CardanoNetwork::TestNet(123456)); + } } From 902299befca3d2e8b03d1786956350c829ce995b Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:07:04 +0200 Subject: [PATCH 06/10] refactor: rename `code()` to `magic_id()` --- .../src/chain_observer/pallas_observer.rs | 2 +- .../src/chain_reader/pallas_chain_reader.rs | 2 +- internal/mithril-dmq/src/consumer/pallas.rs | 2 +- internal/mithril-dmq/src/publisher/pallas.rs | 2 +- mithril-client/src/utils/bootstrap_files.rs | 10 +++++----- mithril-common/src/entities/cardano_network.rs | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/pallas_observer.rs b/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/pallas_observer.rs index 77a0c4f1a65..47505a3132d 100644 --- a/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/pallas_observer.rs +++ b/internal/cardano-node/mithril-cardano-node-chain/src/chain_observer/pallas_observer.rs @@ -56,7 +56,7 @@ impl PallasChainObserver { /// Creates and returns a new `NodeClient` connected to the specified socket. async fn new_client(&self) -> StdResult { - let magic = self.network.code(); + let magic = self.network.magic_id(); let client = NodeClient::connect(&self.socket, magic).await?; Ok(client) diff --git a/internal/cardano-node/mithril-cardano-node-chain/src/chain_reader/pallas_chain_reader.rs b/internal/cardano-node/mithril-cardano-node-chain/src/chain_reader/pallas_chain_reader.rs index 4a909602d6d..66f44941588 100644 --- a/internal/cardano-node/mithril-cardano-node-chain/src/chain_reader/pallas_chain_reader.rs +++ b/internal/cardano-node/mithril-cardano-node-chain/src/chain_reader/pallas_chain_reader.rs @@ -38,7 +38,7 @@ impl PallasChainReader { /// Creates and returns a new `NodeClient` connected to the specified socket. async fn new_client(&self) -> StdResult { - let magic = self.network.code(); + let magic = self.network.magic_id(); NodeClient::connect(&self.socket, magic) .await .map_err(|err| anyhow!(err)) diff --git a/internal/mithril-dmq/src/consumer/pallas.rs b/internal/mithril-dmq/src/consumer/pallas.rs index 7c4b591a6b1..ef59e37c6eb 100644 --- a/internal/mithril-dmq/src/consumer/pallas.rs +++ b/internal/mithril-dmq/src/consumer/pallas.rs @@ -45,7 +45,7 @@ impl DmqConsumerPallas { "socket" => ?self.socket, "network" => ?self.network ); - DmqClient::connect(&self.socket, self.network.code()) + DmqClient::connect(&self.socket, self.network.magic_id()) .await .with_context(|| "DmqConsumerPallas failed to create a new client") } diff --git a/internal/mithril-dmq/src/publisher/pallas.rs b/internal/mithril-dmq/src/publisher/pallas.rs index 311cb82ddf8..4cae2ae4984 100644 --- a/internal/mithril-dmq/src/publisher/pallas.rs +++ b/internal/mithril-dmq/src/publisher/pallas.rs @@ -40,7 +40,7 @@ impl DmqPublisherPallas { /// Creates and returns a new `DmqClient` connected to the specified socket. async fn new_client(&self) -> StdResult { - let magic = self.network.code(); + let magic = self.network.magic_id(); DmqClient::connect(&self.socket, magic) .await .with_context(|| "DmqPublisherPallas failed to create a new client") diff --git a/mithril-client/src/utils/bootstrap_files.rs b/mithril-client/src/utils/bootstrap_files.rs index 854fe871e99..3015ba66e16 100644 --- a/mithril-client/src/utils/bootstrap_files.rs +++ b/mithril-client/src/utils/bootstrap_files.rs @@ -23,7 +23,7 @@ pub fn create_bootstrap_node_files( if let Ok(network) = CardanoNetwork::from_code(network.to_string(), None) { let mut file = File::create(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME))?; - file.write_all(format!("{}", network.code()).as_bytes())?; + file.write_all(format!("{}", network.magic_id()).as_bytes())?; }; Ok(()) @@ -47,7 +47,7 @@ mod test { let file_content = std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); - assert_eq!(file_content, network.code().to_string()); + assert_eq!(file_content, network.magic_id().to_string()); assert!(db_dir.join(CLEAN_FILE_NAME).exists()); } @@ -63,7 +63,7 @@ mod test { let file_content = std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); - assert_eq!(file_content, network.code().to_string()); + assert_eq!(file_content, network.magic_id().to_string()); assert!(db_dir.join(CLEAN_FILE_NAME).exists()); } @@ -79,7 +79,7 @@ mod test { let file_content = std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); - assert_eq!(file_content, network.code().to_string()); + assert_eq!(file_content, network.magic_id().to_string()); assert!(db_dir.join(CLEAN_FILE_NAME).exists()); } @@ -96,7 +96,7 @@ mod test { let file_content = std::fs::read_to_string(db_dir.join(PROTOCOL_MAGIC_ID_FILENAME)).unwrap(); - assert_eq!(file_content, network.code().to_string()); + assert_eq!(file_content, network.magic_id().to_string()); assert!(db_dir.join(CLEAN_FILE_NAME).exists()); } diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index 57b6847cac9..1219255564c 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -52,8 +52,8 @@ impl CardanoNetwork { } } - /// Returns the code (magic) of the network - pub fn code(&self) -> MagicId { + /// Returns the magic ID of the network + pub fn magic_id(&self) -> MagicId { match *self { CardanoNetwork::MainNet => MAINNET_MAGIC_ID, CardanoNetwork::TestNet(magic_id) => magic_id, @@ -227,7 +227,7 @@ mod tests { fn assert_magic_id_conversion_roundtrip(magic_id: MagicId, expected: CardanoNetwork) { let network = CardanoNetwork::from(magic_id); assert_eq!(network, expected); - assert_eq!(network.code(), magic_id); + assert_eq!(network.magic_id(), magic_id); } assert_magic_id_conversion_roundtrip(MAINNET_MAGIC_ID, CardanoNetwork::MainNet); From 8886fe3ca2f83381ee279f2151874d10b4145b78 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:43:40 +0200 Subject: [PATCH 07/10] refactor: use the `CardanoNetwork` and magic IDs constants from `mithril-client` library in the `tools utxo-hd snapshot-converter` command in the client CLI --- .../src/commands/tools/snapshot_converter.rs | 64 +++++++++++-------- mithril-client/src/type_alias.rs | 6 +- .../src/entities/cardano_network.rs | 10 ++- mithril-common/src/entities/mod.rs | 2 +- 4 files changed, 50 insertions(+), 32 deletions(-) diff --git a/mithril-client-cli/src/commands/tools/snapshot_converter.rs b/mithril-client-cli/src/commands/tools/snapshot_converter.rs index 48a1e556dde..4df430f0b3b 100644 --- a/mithril-client-cli/src/commands/tools/snapshot_converter.rs +++ b/mithril-client-cli/src/commands/tools/snapshot_converter.rs @@ -8,7 +8,10 @@ use std::{ use anyhow::{Context, anyhow}; use clap::{Parser, ValueEnum}; -use mithril_client::MithrilResult; +use mithril_client::{ + MithrilError, MithrilResult, + common::{CardanoNetwork, MagicId, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID}, +}; use crate::utils::{ ArchiveUnpacker, GitHubReleaseRetriever, HttpDownloader, ReqwestGitHubApiClient, @@ -34,10 +37,6 @@ const SNAPSHOT_CONVERTER_CONFIG_FILE: &str = "config.json"; const LEDGER_DIR: &str = "ledger"; const PROTOCOL_MAGIC_ID_FILE: &str = "protocolMagicId"; -const MAINNET_MAGIC_ID: u32 = 764824073; -const PREPROD_MAGIC_ID: u32 = 1; -const PREVIEW_MAGIC_ID: u32 = 2; - const CONVERSION_FALLBACK_LIMIT: usize = 2; #[derive(Debug, Clone, ValueEnum, Eq, PartialEq)] @@ -58,13 +57,13 @@ impl fmt::Display for UTxOHDFlavor { } #[derive(Debug, Clone, ValueEnum, Eq, PartialEq)] -enum CardanoNetwork { +enum CardanoNetworkCliArg { Preview, Preprod, Mainnet, } -impl fmt::Display for CardanoNetwork { +impl fmt::Display for CardanoNetworkCliArg { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Preview => write!(f, "preview"), @@ -74,6 +73,23 @@ impl fmt::Display for CardanoNetwork { } } +impl TryFrom for CardanoNetworkCliArg { + type Error = MithrilError; + + fn try_from(network: CardanoNetwork) -> Result { + match network { + CardanoNetwork::MainNet => Ok(Self::Mainnet), + CardanoNetwork::TestNet(magic_id) => match magic_id { + PREVIEW_MAGIC_ID => Ok(Self::Preview), + PREPROD_MAGIC_ID => Ok(Self::Preprod), + _ => Err(anyhow!( + "Cardano network not supported for ledger state snapshot conversion: {network:?}", + )), + }, + } + } +} + #[cfg_attr(test, mockall::automock)] trait SnapshotConverter { fn convert(&self, input_path: &Path, output_path: &Path) -> MithrilResult<()>; @@ -133,7 +149,7 @@ pub struct SnapshotConverterCommand { since = "0.12.12", note = "optional: automatically detected from the protocolMagicId file" )] - cardano_network: Option, + cardano_network: Option, /// UTxO-HD flavor to convert the ledger snapshot to (`Legacy` or `LMDB`). #[clap(long)] @@ -279,7 +295,7 @@ impl SnapshotConverterCommand { work_dir: &Path, db_dir: &Path, distribution_dir: &Path, - cardano_network: &CardanoNetwork, + cardano_network: &CardanoNetworkCliArg, utxo_hd_flavor: &UTxOHDFlavor, commit: bool, ) -> MithrilResult<()> { @@ -374,7 +390,7 @@ impl SnapshotConverterCommand { fn get_snapshot_converter_config_path( distribution_dir: &Path, - network: &CardanoNetwork, + network: &CardanoNetworkCliArg, ) -> PathBuf { distribution_dir .join(SNAPSHOT_CONVERTER_CONFIG_DIR) @@ -520,7 +536,7 @@ impl SnapshotConverterCommand { Ok(()) } - fn detect_cardano_network(db_dir: &Path) -> MithrilResult { + fn detect_cardano_network(db_dir: &Path) -> MithrilResult { let magic_id_path = db_dir.join(PROTOCOL_MAGIC_ID_FILE); let content = std::fs::read_to_string(&magic_id_path).with_context(|| { format!( @@ -528,17 +544,13 @@ impl SnapshotConverterCommand { magic_id_path.display() ) })?; - let id: u32 = content + let id: MagicId = content .trim() .parse() .with_context(|| format!("Invalid protocolMagicId value: '{}'", content.trim()))?; + let network = CardanoNetwork::from(id); - match id { - MAINNET_MAGIC_ID => Ok(CardanoNetwork::Mainnet), - PREPROD_MAGIC_ID => Ok(CardanoNetwork::Preprod), - PREVIEW_MAGIC_ID => Ok(CardanoNetwork::Preview), - _ => Err(anyhow!("Unknown protocolMagicId value: '{}'", id)), - } + CardanoNetworkCliArg::try_from(network) } } @@ -727,7 +739,7 @@ mod tests { #[test] fn returns_config_path_for_mainnet() { let distribution_dir = PathBuf::from("/path/to/distribution"); - let network = CardanoNetwork::Mainnet; + let network = CardanoNetworkCliArg::Mainnet; let config_path = SnapshotConverterCommand::get_snapshot_converter_config_path( &distribution_dir, @@ -746,7 +758,7 @@ mod tests { #[test] fn returns_config_path_for_preprod() { let distribution_dir = PathBuf::from("/path/to/distribution"); - let network = CardanoNetwork::Preprod; + let network = CardanoNetworkCliArg::Preprod; let config_path = SnapshotConverterCommand::get_snapshot_converter_config_path( &distribution_dir, @@ -765,7 +777,7 @@ mod tests { #[test] fn returns_config_path_for_preview() { let distribution_dir = PathBuf::from("/path/to/distribution"); - let network = CardanoNetwork::Preview; + let network = CardanoNetworkCliArg::Preview; let config_path = SnapshotConverterCommand::get_snapshot_converter_config_path( &distribution_dir, @@ -973,9 +985,11 @@ mod tests { } mod detect_cardano_network { + use mithril_client::common::MAINNET_MAGIC_ID; + use super::*; - fn create_protocol_magic_id_file(db_dir: &Path, magic_id: u32) -> PathBuf { + fn create_protocol_magic_id_file(db_dir: &Path, magic_id: MagicId) -> PathBuf { let file_path = db_dir.join(PROTOCOL_MAGIC_ID_FILE); std::fs::write(&file_path, magic_id.to_string()).unwrap(); @@ -989,7 +1003,7 @@ mod tests { let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); - assert_eq!(network, CardanoNetwork::Mainnet); + assert_eq!(network, CardanoNetworkCliArg::Mainnet); } #[test] @@ -999,7 +1013,7 @@ mod tests { let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); - assert_eq!(network, CardanoNetwork::Preprod); + assert_eq!(network, CardanoNetworkCliArg::Preprod); } #[test] @@ -1009,7 +1023,7 @@ mod tests { let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); - assert_eq!(network, CardanoNetwork::Preview); + assert_eq!(network, CardanoNetworkCliArg::Preview); } #[test] diff --git a/mithril-client/src/type_alias.rs b/mithril-client/src/type_alias.rs index 8c2b0726a4a..d603c1c9bcc 100644 --- a/mithril-client/src/type_alias.rs +++ b/mithril-client/src/type_alias.rs @@ -70,9 +70,9 @@ pub mod common { pub use mithril_common::entities::{ AncillaryLocation, BlockHash, BlockNumber, CardanoDbBeacon, CardanoNetwork, ChainPoint, CompressionAlgorithm, DigestLocation, Epoch, ImmutableFileNumber, ImmutablesLocation, - MultiFilesUri, ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, - SignedEntityType, SlotNumber, StakeDistribution, SupportedEra, TemplateUri, - TransactionHash, + MAINNET_MAGIC_ID, MagicId, MultiFilesUri, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID, + ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, SignedEntityType, SlotNumber, + StakeDistribution, SupportedEra, TemplateUri, TransactionHash, }; pub use mithril_common::messages::{ AncillaryMessagePart, DigestsMessagePart, ImmutablesMessagePart, diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index 1219255564c..c98b2a705f3 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -4,9 +4,13 @@ use thiserror::Error; use crate::{MagicId, StdResult}; -const MAINNET_MAGIC_ID: MagicId = 764824073; -const PREPROD_MAGIC_ID: MagicId = 1; -const PREVIEW_MAGIC_ID: MagicId = 2; +/// Mainnet magic ID +pub const MAINNET_MAGIC_ID: MagicId = 764824073; +/// Preprod magic ID +pub const PREPROD_MAGIC_ID: MagicId = 1; +/// Preview magic ID +pub const PREVIEW_MAGIC_ID: MagicId = 2; +/// Devnet magic ID pub(crate) const DEVNET_MAGIC_ID: MagicId = 42; #[derive(Error, Debug)] diff --git a/mithril-common/src/entities/mod.rs b/mithril-common/src/entities/mod.rs index d3539ad3747..35952244903 100644 --- a/mithril-common/src/entities/mod.rs +++ b/mithril-common/src/entities/mod.rs @@ -40,8 +40,8 @@ pub use cardano_database::{ ImmutablesLocations, }; pub use cardano_db_beacon::CardanoDbBeacon; -pub use cardano_network::CardanoNetwork; pub(crate) use cardano_network::DEVNET_MAGIC_ID; +pub use cardano_network::{CardanoNetwork, MAINNET_MAGIC_ID, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID}; pub use cardano_stake_distribution::CardanoStakeDistribution; pub use cardano_transaction::{CardanoTransaction, TransactionHash}; pub use cardano_transactions_set_proof::CardanoTransactionsSetProof; From 94118ecaa2db14b9849c062b3676c680649d70f1 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:21:51 +0200 Subject: [PATCH 08/10] refactor: move magic ID constants into `CardanoNetwork` enum and update exports/imports --- .../src/commands/tools/snapshot_converter.rs | 14 ++- mithril-client/src/type_alias.rs | 6 +- .../src/entities/cardano_network.rs | 92 +++++++++++-------- mithril-common/src/entities/mod.rs | 3 +- mithril-common/src/test_utils/fake_data.rs | 9 +- 5 files changed, 66 insertions(+), 58 deletions(-) diff --git a/mithril-client-cli/src/commands/tools/snapshot_converter.rs b/mithril-client-cli/src/commands/tools/snapshot_converter.rs index 4df430f0b3b..d1994fa349b 100644 --- a/mithril-client-cli/src/commands/tools/snapshot_converter.rs +++ b/mithril-client-cli/src/commands/tools/snapshot_converter.rs @@ -10,7 +10,7 @@ use clap::{Parser, ValueEnum}; use mithril_client::{ MithrilError, MithrilResult, - common::{CardanoNetwork, MagicId, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID}, + common::{CardanoNetwork, MagicId}, }; use crate::utils::{ @@ -80,8 +80,8 @@ impl TryFrom for CardanoNetworkCliArg { match network { CardanoNetwork::MainNet => Ok(Self::Mainnet), CardanoNetwork::TestNet(magic_id) => match magic_id { - PREVIEW_MAGIC_ID => Ok(Self::Preview), - PREPROD_MAGIC_ID => Ok(Self::Preprod), + CardanoNetwork::PREVIEW_MAGIC_ID => Ok(Self::Preview), + CardanoNetwork::PREPROD_MAGIC_ID => Ok(Self::Preprod), _ => Err(anyhow!( "Cardano network not supported for ledger state snapshot conversion: {network:?}", )), @@ -985,8 +985,6 @@ mod tests { } mod detect_cardano_network { - use mithril_client::common::MAINNET_MAGIC_ID; - use super::*; fn create_protocol_magic_id_file(db_dir: &Path, magic_id: MagicId) -> PathBuf { @@ -999,7 +997,7 @@ mod tests { #[test] fn detects_mainnet() { let db_dir = temp_dir_create!(); - create_protocol_magic_id_file(&db_dir, MAINNET_MAGIC_ID); + create_protocol_magic_id_file(&db_dir, CardanoNetwork::MAINNET_MAGIC_ID); let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); @@ -1009,7 +1007,7 @@ mod tests { #[test] fn detects_preprod() { let db_dir = temp_dir_create!(); - create_protocol_magic_id_file(&db_dir, PREPROD_MAGIC_ID); + create_protocol_magic_id_file(&db_dir, CardanoNetwork::PREPROD_MAGIC_ID); let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); @@ -1019,7 +1017,7 @@ mod tests { #[test] fn detects_preview() { let db_dir = temp_dir_create!(); - create_protocol_magic_id_file(&db_dir, PREVIEW_MAGIC_ID); + create_protocol_magic_id_file(&db_dir, CardanoNetwork::PREVIEW_MAGIC_ID); let network = SnapshotConverterCommand::detect_cardano_network(&db_dir).unwrap(); diff --git a/mithril-client/src/type_alias.rs b/mithril-client/src/type_alias.rs index d603c1c9bcc..aa616139b48 100644 --- a/mithril-client/src/type_alias.rs +++ b/mithril-client/src/type_alias.rs @@ -70,9 +70,9 @@ pub mod common { pub use mithril_common::entities::{ AncillaryLocation, BlockHash, BlockNumber, CardanoDbBeacon, CardanoNetwork, ChainPoint, CompressionAlgorithm, DigestLocation, Epoch, ImmutableFileNumber, ImmutablesLocation, - MAINNET_MAGIC_ID, MagicId, MultiFilesUri, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID, - ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, SignedEntityType, SlotNumber, - StakeDistribution, SupportedEra, TemplateUri, TransactionHash, + MagicId, MultiFilesUri, ProtocolMessage, ProtocolMessagePartKey, ProtocolParameters, + SignedEntityType, SlotNumber, StakeDistribution, SupportedEra, TemplateUri, + TransactionHash, }; pub use mithril_common::messages::{ AncillaryMessagePart, DigestsMessagePart, ImmutablesMessagePart, diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index c98b2a705f3..04f7eee26e6 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -4,15 +4,6 @@ use thiserror::Error; use crate::{MagicId, StdResult}; -/// Mainnet magic ID -pub const MAINNET_MAGIC_ID: MagicId = 764824073; -/// Preprod magic ID -pub const PREPROD_MAGIC_ID: MagicId = 1; -/// Preview magic ID -pub const PREVIEW_MAGIC_ID: MagicId = 2; -/// Devnet magic ID -pub(crate) const DEVNET_MAGIC_ID: MagicId = 42; - #[derive(Error, Debug)] pub enum CardanoNetworkError { #[error("parse from code error: '{0}'")] @@ -31,6 +22,15 @@ pub enum CardanoNetwork { } impl CardanoNetwork { + /// Mainnet magic ID + pub const MAINNET_MAGIC_ID: MagicId = 764824073; + /// Preprod magic ID + pub const PREPROD_MAGIC_ID: MagicId = 1; + /// Preview magic ID + pub const PREVIEW_MAGIC_ID: MagicId = 2; + /// Devnet magic ID + pub(crate) const DEVNET_MAGIC_ID: MagicId = 42; + /// Instantiates a CardanoNetwork from its code and magic id pub fn from_code( network_code: String, @@ -38,9 +38,9 @@ impl CardanoNetwork { ) -> Result { match network_code.to_lowercase().as_str() { "mainnet" => Ok(CardanoNetwork::MainNet), - "preview" => Ok(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID)), - "preprod" => Ok(CardanoNetwork::TestNet(PREPROD_MAGIC_ID)), - "devnet" => Ok(CardanoNetwork::TestNet(DEVNET_MAGIC_ID)), + "preview" => Ok(CardanoNetwork::TestNet(Self::PREVIEW_MAGIC_ID)), + "preprod" => Ok(CardanoNetwork::TestNet(Self::PREPROD_MAGIC_ID)), + "devnet" => Ok(CardanoNetwork::TestNet(Self::DEVNET_MAGIC_ID)), "private" => { if let Some(magic) = network_magic { Ok(CardanoNetwork::TestNet(magic)) @@ -59,7 +59,7 @@ impl CardanoNetwork { /// Returns the magic ID of the network pub fn magic_id(&self) -> MagicId { match *self { - CardanoNetwork::MainNet => MAINNET_MAGIC_ID, + CardanoNetwork::MainNet => Self::MAINNET_MAGIC_ID, CardanoNetwork::TestNet(magic_id) => magic_id, } } @@ -68,7 +68,7 @@ impl CardanoNetwork { pub fn compute_allow_unparsable_block(&self, allow_unparsable_block: bool) -> StdResult { let allow_unparsable_block = match self { CardanoNetwork::MainNet => false, - CardanoNetwork::TestNet(id) if *id == PREPROD_MAGIC_ID => false, + CardanoNetwork::TestNet(id) if *id == Self::PREPROD_MAGIC_ID => false, _ => allow_unparsable_block, }; @@ -81,9 +81,9 @@ impl Display for CardanoNetwork { match *self { CardanoNetwork::MainNet => write!(f, "mainnet"), CardanoNetwork::TestNet(magic_id) => match magic_id { - PREVIEW_MAGIC_ID => write!(f, "preview"), - PREPROD_MAGIC_ID => write!(f, "preprod"), - DEVNET_MAGIC_ID => write!(f, "devnet"), + Self::PREVIEW_MAGIC_ID => write!(f, "preview"), + Self::PREPROD_MAGIC_ID => write!(f, "preprod"), + Self::DEVNET_MAGIC_ID => write!(f, "devnet"), _ => write!(f, "private"), }, } @@ -105,7 +105,7 @@ impl From<&CardanoNetwork> for String { impl From for CardanoNetwork { fn from(magic_id: MagicId) -> Self { match magic_id { - MAINNET_MAGIC_ID => Self::MainNet, + Self::MAINNET_MAGIC_ID => Self::MainNet, _ => Self::TestNet(magic_id), } } @@ -127,27 +127,27 @@ mod tests { ); assert_eq!( CardanoNetwork::from_code("preview".to_string(), None).unwrap(), - CardanoNetwork::TestNet(PREVIEW_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("preview".to_string(), Some(123)).unwrap(), - CardanoNetwork::TestNet(PREVIEW_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("preprod".to_string(), None).unwrap(), - CardanoNetwork::TestNet(PREPROD_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("preprod".to_string(), Some(123)).unwrap(), - CardanoNetwork::TestNet(PREPROD_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("devnet".to_string(), None).unwrap(), - CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("devnet".to_string(), Some(123)).unwrap(), - CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID) ); assert_eq!( CardanoNetwork::from_code("private".to_string(), Some(123)).unwrap(), @@ -166,12 +166,12 @@ mod tests { CardanoNetwork::MainNet.compute_allow_unparsable_block(true).unwrap(); assert!(!allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(PREPROD_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID) .compute_allow_unparsable_block(false) .unwrap(); assert!(!allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(PREPROD_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID) .compute_allow_unparsable_block(true) .unwrap(); assert!(!allow_unparsable_block); @@ -180,22 +180,22 @@ mod tests { #[test] fn compute_allow_unparsable_block_should_return_value_passed_in_parameter_on_all_networks_other_than_mainnet_and_preprod() { - let allow_unparsable_block = CardanoNetwork::TestNet(PREVIEW_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID) .compute_allow_unparsable_block(false) .unwrap(); assert!(!allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(PREVIEW_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID) .compute_allow_unparsable_block(true) .unwrap(); assert!(allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID) .compute_allow_unparsable_block(false) .unwrap(); assert!(!allow_unparsable_block); - let allow_unparsable_block = CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + let allow_unparsable_block = CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID) .compute_allow_unparsable_block(true) .unwrap(); assert!(allow_unparsable_block); @@ -220,9 +220,18 @@ mod tests { } assert_all_conversions_eq(CardanoNetwork::MainNet, "mainnet"); - assert_all_conversions_eq(CardanoNetwork::TestNet(DEVNET_MAGIC_ID), "devnet"); - assert_all_conversions_eq(CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), "preview"); - assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod"); + assert_all_conversions_eq( + CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID), + "devnet", + ); + assert_all_conversions_eq( + CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID), + "preview", + ); + assert_all_conversions_eq( + CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID), + "preprod", + ); assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private"); } @@ -234,18 +243,21 @@ mod tests { assert_eq!(network.magic_id(), magic_id); } - assert_magic_id_conversion_roundtrip(MAINNET_MAGIC_ID, CardanoNetwork::MainNet); assert_magic_id_conversion_roundtrip( - PREVIEW_MAGIC_ID, - CardanoNetwork::TestNet(PREVIEW_MAGIC_ID), + CardanoNetwork::MAINNET_MAGIC_ID, + CardanoNetwork::MainNet, + ); + assert_magic_id_conversion_roundtrip( + CardanoNetwork::PREVIEW_MAGIC_ID, + CardanoNetwork::TestNet(CardanoNetwork::PREVIEW_MAGIC_ID), ); assert_magic_id_conversion_roundtrip( - PREPROD_MAGIC_ID, - CardanoNetwork::TestNet(PREPROD_MAGIC_ID), + CardanoNetwork::PREPROD_MAGIC_ID, + CardanoNetwork::TestNet(CardanoNetwork::PREPROD_MAGIC_ID), ); assert_magic_id_conversion_roundtrip( - DEVNET_MAGIC_ID, - CardanoNetwork::TestNet(DEVNET_MAGIC_ID), + CardanoNetwork::DEVNET_MAGIC_ID, + CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID), ); assert_magic_id_conversion_roundtrip(123456, CardanoNetwork::TestNet(123456)); } diff --git a/mithril-common/src/entities/mod.rs b/mithril-common/src/entities/mod.rs index 35952244903..f088bf2cfca 100644 --- a/mithril-common/src/entities/mod.rs +++ b/mithril-common/src/entities/mod.rs @@ -40,8 +40,7 @@ pub use cardano_database::{ ImmutablesLocations, }; pub use cardano_db_beacon::CardanoDbBeacon; -pub(crate) use cardano_network::DEVNET_MAGIC_ID; -pub use cardano_network::{CardanoNetwork, MAINNET_MAGIC_ID, PREPROD_MAGIC_ID, PREVIEW_MAGIC_ID}; +pub use cardano_network::CardanoNetwork; pub use cardano_stake_distribution::CardanoStakeDistribution; pub use cardano_transaction::{CardanoTransaction, TransactionHash}; pub use cardano_transactions_set_proof::CardanoTransactionsSetProof; diff --git a/mithril-common/src/test_utils/fake_data.rs b/mithril-common/src/test_utils/fake_data.rs index 9342d5df742..2f0568ebcb6 100644 --- a/mithril-common/src/test_utils/fake_data.rs +++ b/mithril-common/src/test_utils/fake_data.rs @@ -7,10 +7,9 @@ use crate::CardanoNetwork; use crate::crypto_helper::{self, ProtocolMultiSignature}; use crate::entities::{ self, AncillaryLocations, BlockNumber, CardanoDatabaseSnapshotArtifactData, - CertificateMetadata, CertificateSignature, CompressionAlgorithm, DEVNET_MAGIC_ID, - DigestsLocations, Epoch, ImmutablesLocations, LotteryIndex, ProtocolMessage, - ProtocolMessagePartKey, SignedEntityType, SingleSignature, SlotNumber, StakeDistribution, - StakeDistributionParty, + CertificateMetadata, CertificateSignature, CompressionAlgorithm, DigestsLocations, Epoch, + ImmutablesLocations, LotteryIndex, ProtocolMessage, ProtocolMessagePartKey, SignedEntityType, + SingleSignature, SlotNumber, StakeDistribution, StakeDistributionParty, }; use crate::test_utils::MithrilFixtureBuilder; @@ -18,7 +17,7 @@ use super::fake_keys; /// Fake network pub fn network() -> crate::CardanoNetwork { - crate::CardanoNetwork::TestNet(DEVNET_MAGIC_ID) + crate::CardanoNetwork::TestNet(CardanoNetwork::DEVNET_MAGIC_ID) } /// Fake Beacon From 8886aa173447b6db173eeba251dcc0bd7a076023 Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Thu, 17 Jul 2025 11:43:41 +0200 Subject: [PATCH 09/10] chore: remove `testnet` network value from docs and signer dev config file --- .../root/manual/develop/nodes/mithril-aggregator.md | 8 ++++---- docs/website/root/manual/develop/nodes/mithril-signer.md | 2 +- mithril-aggregator/src/commands/genesis_command.rs | 2 +- mithril-aggregator/src/configuration.rs | 2 +- mithril-common/src/entities/cardano_network.rs | 2 +- mithril-signer/config/dev.json | 2 +- mithril-signer/src/configuration.rs | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/website/root/manual/develop/nodes/mithril-aggregator.md b/docs/website/root/manual/develop/nodes/mithril-aggregator.md index b000730c69e..299d78165e2 100644 --- a/docs/website/root/manual/develop/nodes/mithril-aggregator.md +++ b/docs/website/root/manual/develop/nodes/mithril-aggregator.md @@ -503,7 +503,7 @@ Here is a list of the available parameters for the serve command: | `data_stores_directory` | - | - | `data_stores_directory` | Directory to store aggregator databases | - | `./mithril-aggregator/stores` | :heavy_check_mark: | | `db_directory` | `--db-directory` | - | `DB_DIRECTORY` | Directory of the **Cardano node** stores | `/db` | - | :heavy_check_mark: | | `genesis_verification_key` | - | - | `GENESIS_VERIFICATION_KEY` | Genesis verification key | - | - | :heavy_check_mark: | -| `network` | - | - | `NETWORK` | Cardano network | - | `testnet` or `mainnet` or `devnet` | :heavy_check_mark: | +| `network` | - | - | `NETWORK` | Cardano network | - | `mainnet` or `preprod` or `devnet` | :heavy_check_mark: | | `network_magic` | - | - | `NETWORK_MAGIC` | Cardano network magic number (for `testnet` and `devnet`) | - | `1097911063` or `42` | - | | `protocol_parameters` | - | - | `PROTOCOL_PARAMETERS__K`, `PROTOCOL_PARAMETERS__M`, and `PROTOCOL_PARAMETERS__PHI_F` | Mithril protocol parameters | - | `{ k: 5, m: 100, phi_f: 0.65 }` | :heavy_check_mark: | | `run_mode` | `--run-mode` | `-r` | `RUN_MODE` | Runtime mode | `dev` | - | :heavy_check_mark: | @@ -552,7 +552,7 @@ Here is a list of the available parameters for the serve command: | `cardano_node_socket_path` | - | - | `CARDANO_NODE_SOCKET_PATH` | Path of the socket opened by the Cardano node | - | `/ipc/node.socket` | :heavy_check_mark: | | `cardano_cli_path` | - | - | `CARDANO_CLI_PATH` | Cardano CLI tool path | - | `cardano-cli` | - | | `chain_observer_type` | - | - | `CHAIN_OBSERVER_TYPE` | Chain observer type that can be `cardano-cli`, `pallas` or `fake`. | `pallas` | - | :heavy_check_mark: | -| `network` | - | - | `NETWORK` | Cardano network | - | `testnet` or `mainnet` or `devnet` | :heavy_check_mark: | +| `network` | - | - | `NETWORK` | Cardano network | - | `mainnet` or `preprod` or `devnet` | :heavy_check_mark: | | `network_magic` | - | - | `NETWORK_MAGIC` | Cardano network magic number (for `testnet` and `devnet`) | - | `1097911063` or `42` | - | `genesis export` command: @@ -564,7 +564,7 @@ Here is a list of the available parameters for the serve command: | `cardano_node_socket_path` | - | - | `CARDANO_NODE_SOCKET_PATH` | Path of the socket opened by the Cardano node | - | `/ipc/node.socket` | :heavy_check_mark: | | `cardano_cli_path` | - | - | `CARDANO_CLI_PATH` | Cardano CLI tool path | - | `cardano-cli` | - | | `chain_observer_type` | - | - | `CHAIN_OBSERVER_TYPE` | Chain observer type that can be `cardano-cli`, `pallas` or `fake`. | `pallas` | - | :heavy_check_mark: | -| `network` | - | - | `NETWORK` | Cardano network | - | `testnet` or `mainnet` or `devnet` | :heavy_check_mark: | +| `network` | - | - | `NETWORK` | Cardano network | - | `mainnet` or `preprod` or `devnet` | :heavy_check_mark: | | `network_magic` | - | - | `NETWORK_MAGIC` | Cardano network magic number (for `testnet` and `devnet`) | - | `1097911063` or `42` | - | `genesis import` command: @@ -577,7 +577,7 @@ Here is a list of the available parameters for the serve command: | `cardano_node_socket_path` | - | - | `CARDANO_NODE_SOCKET_PATH` | Path of the socket opened by the Cardano node | - | `/ipc/node.socket` | :heavy_check_mark: | | `cardano_cli_path` | - | - | `CARDANO_CLI_PATH` | Cardano CLI tool path | - | `cardano-cli` | - | | `chain_observer_type` | - | - | `CHAIN_OBSERVER_TYPE` | Chain observer type that can be `cardano-cli`, `pallas` or `fake`. | `pallas` | - | :heavy_check_mark: | -| `network` | - | - | `NETWORK` | Cardano network | - | `testnet` or `mainnet` or `devnet` | :heavy_check_mark: | +| `network` | - | - | `NETWORK` | Cardano network | - | `mainnet` or `preprod` or `devnet` | :heavy_check_mark: | | `network_magic` | - | - | `NETWORK_MAGIC` | Cardano network magic number (for `testnet` and `devnet`) | - | `1097911063` or `42` | - | `genesis sign` command: diff --git a/docs/website/root/manual/develop/nodes/mithril-signer.md b/docs/website/root/manual/develop/nodes/mithril-signer.md index df6b0a08e15..b9aa68e40bb 100644 --- a/docs/website/root/manual/develop/nodes/mithril-signer.md +++ b/docs/website/root/manual/develop/nodes/mithril-signer.md @@ -238,7 +238,7 @@ Here is a list of the available parameters: | `cardano_cli_path` | - | - | `CARDANO_CLI_PATH` | Cardano CLI tool path | - | `cardano-cli` | :heavy_check_mark: | | `cardano_node_socket_path` | - | - | `CARDANO_NODE_SOCKET_PATH` | Path of the socket opened by the Cardano node | - | `/ipc/node.socket` | :heavy_check_mark: | | `db_directory` | `--db-directory` | - | `DB_DIRECTORY` | Directory to snapshot from the **Cardano node** | `/db` | - | :heavy_check_mark: | -| `network` | - | - | `NETWORK` | Cardano network | - | `testnet` or `mainnet` or `devnet` | :heavy_check_mark: | +| `network` | - | - | `NETWORK` | Cardano network | - | `mainnet` or `preprod` or `devnet` | :heavy_check_mark: | | `network_magic` | - | - | `NETWORK_MAGIC` | Cardano network magic number (for `testnet` and `devnet`) | - | `1097911063` or `42` | - | | `party_id` | - | - | `PARTY_ID` | Party Id of the signer, usually the `Pool Id` of the SPO | - | `pool1pxaqe80sqpde7902er5kf6v0c7y0sv6d5g676766v2h829fvs3x` | Mandatory in `pool Id declaration mode` where the owner is not verified (decommissioned, only available when built with `allow_skip_signer_certification` feature, for test only) | | `run_interval` | - | - | `RUN_INTERVAL` | Interval between two runtime cycles in ms | - | `60000` | :heavy_check_mark: | diff --git a/mithril-aggregator/src/commands/genesis_command.rs b/mithril-aggregator/src/commands/genesis_command.rs index 77bb53e7e9f..d4054adf202 100644 --- a/mithril-aggregator/src/commands/genesis_command.rs +++ b/mithril-aggregator/src/commands/genesis_command.rs @@ -38,7 +38,7 @@ pub struct GenesisCommandConfiguration { pub network_magic: Option, /// Cardano network - #[example = "`testnet` or `mainnet` or `devnet`"] + #[example = "`mainnet` or `preprod` or `devnet`"] network: String, /// Cardano chain observer type diff --git a/mithril-aggregator/src/configuration.rs b/mithril-aggregator/src/configuration.rs index 199ea50af69..3ccd3aaf6e5 100644 --- a/mithril-aggregator/src/configuration.rs +++ b/mithril-aggregator/src/configuration.rs @@ -416,7 +416,7 @@ pub struct ServeCommandConfiguration { pub network_magic: Option, /// Cardano network - #[example = "`testnet` or `mainnet` or `devnet`"] + #[example = "`mainnet` or `preprod` or `devnet`"] pub network: String, /// Cardano chain observer type diff --git a/mithril-common/src/entities/cardano_network.rs b/mithril-common/src/entities/cardano_network.rs index 04f7eee26e6..71a55d96471 100644 --- a/mithril-common/src/entities/cardano_network.rs +++ b/mithril-common/src/entities/cardano_network.rs @@ -17,7 +17,7 @@ pub enum CardanoNetwork { /// The Cardano mainnet network MainNet, - /// A Cardano test network (preview, preprod or private devnet) + /// A Cardano test network (preview, preprod or private testnet) TestNet(MagicId), } diff --git a/mithril-signer/config/dev.json b/mithril-signer/config/dev.json index 916ed510f48..a89df39af84 100644 --- a/mithril-signer/config/dev.json +++ b/mithril-signer/config/dev.json @@ -1,5 +1,5 @@ { - "network": "testnet", + "network": "devnet", "aggregator_endpoint": "http://localhost:8080/aggregator", "party_id": 0, "run_interval": 20000, diff --git a/mithril-signer/src/configuration.rs b/mithril-signer/src/configuration.rs index 64cc56f8f85..1ef77077f3f 100644 --- a/mithril-signer/src/configuration.rs +++ b/mithril-signer/src/configuration.rs @@ -44,7 +44,7 @@ pub struct Configuration { pub dmq_node_socket_path: Option, /// Cardano network - #[example = "`testnet` or `mainnet` or `devnet`"] + #[example = "`mainnet` or `preprod` or `devnet`"] pub network: String, /// Cardano Network Magic number From 2d90b53df4a7785a7ee2ef994f865a27f98e4c1e Mon Sep 17 00:00:00 2001 From: Damien Lachaume <135982616+dlachaume@users.noreply.github.com> Date: Thu, 17 Jul 2025 11:44:11 +0200 Subject: [PATCH 10/10] chore: upgrade crate versions and `mithril-test-lab/mithril-devnet/VERSION` version * mithril-cardano-node-chain from `0.1.3` to `0.1.4` * mithril-dmq from `0.1.3` to `0.1.4` * mithril-aggregator from `0.7.73` to `0.7.74` * mithril-client-cli from `0.12.21` to `0.12.22` * mithril-client from `0.12.21` to `0.12.22` * mithril-common from `0.6.8` to `0.6.9` * mithril-signer from `0.2.259` to `0.2.260` * mithril-end-to-end from `0.4.96` to `0.4.97` * mithril-test-lab/mithril-devnet/VERSION from `0.4.13` to `0.4.14` --- Cargo.lock | 16 ++++++++-------- .../mithril-cardano-node-chain/Cargo.toml | 2 +- internal/mithril-dmq/Cargo.toml | 2 +- mithril-aggregator/Cargo.toml | 2 +- mithril-client-cli/Cargo.toml | 2 +- mithril-client/Cargo.toml | 2 +- mithril-common/Cargo.toml | 2 +- mithril-signer/Cargo.toml | 2 +- mithril-test-lab/mithril-devnet/VERSION | 2 +- mithril-test-lab/mithril-end-to-end/Cargo.toml | 2 +- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77ff426a489..dbb9fc6b2c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3910,7 +3910,7 @@ dependencies = [ [[package]] name = "mithril-aggregator" -version = "0.7.73" +version = "0.7.74" dependencies = [ "anyhow", "async-trait", @@ -4013,7 +4013,7 @@ dependencies = [ [[package]] name = "mithril-cardano-node-chain" -version = "0.1.3" +version = "0.1.4" dependencies = [ "anyhow", "async-trait", @@ -4072,7 +4072,7 @@ dependencies = [ [[package]] name = "mithril-client" -version = "0.12.21" +version = "0.12.22" dependencies = [ "anyhow", "async-recursion", @@ -4110,7 +4110,7 @@ dependencies = [ [[package]] name = "mithril-client-cli" -version = "0.12.21" +version = "0.12.22" dependencies = [ "anyhow", "async-trait", @@ -4162,7 +4162,7 @@ dependencies = [ [[package]] name = "mithril-common" -version = "0.6.8" +version = "0.6.9" dependencies = [ "anyhow", "async-trait", @@ -4204,7 +4204,7 @@ dependencies = [ [[package]] name = "mithril-dmq" -version = "0.1.3" +version = "0.1.4" dependencies = [ "anyhow", "async-trait", @@ -4240,7 +4240,7 @@ dependencies = [ [[package]] name = "mithril-end-to-end" -version = "0.4.96" +version = "0.4.97" dependencies = [ "anyhow", "async-recursion", @@ -4372,7 +4372,7 @@ dependencies = [ [[package]] name = "mithril-signer" -version = "0.2.259" +version = "0.2.260" dependencies = [ "anyhow", "async-trait", diff --git a/internal/cardano-node/mithril-cardano-node-chain/Cargo.toml b/internal/cardano-node/mithril-cardano-node-chain/Cargo.toml index 928999cd8b0..bf8dddc9847 100644 --- a/internal/cardano-node/mithril-cardano-node-chain/Cargo.toml +++ b/internal/cardano-node/mithril-cardano-node-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-cardano-node-chain" -version = "0.1.3" +version = "0.1.4" authors.workspace = true documentation.workspace = true edition.workspace = true diff --git a/internal/mithril-dmq/Cargo.toml b/internal/mithril-dmq/Cargo.toml index 69bca553129..86b7036a5af 100644 --- a/internal/mithril-dmq/Cargo.toml +++ b/internal/mithril-dmq/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mithril-dmq" description = "Mechanisms to publish and consume messages of a 'Decentralized Message Queue network' through a DMQ node" -version = "0.1.3" +version = "0.1.4" authors.workspace = true documentation.workspace = true edition.workspace = true diff --git a/mithril-aggregator/Cargo.toml b/mithril-aggregator/Cargo.toml index 713c5f5023d..d453dafeab9 100644 --- a/mithril-aggregator/Cargo.toml +++ b/mithril-aggregator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-aggregator" -version = "0.7.73" +version = "0.7.74" description = "A Mithril Aggregator server" authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-client-cli/Cargo.toml b/mithril-client-cli/Cargo.toml index c10cf7a9ec7..7acc40a242b 100644 --- a/mithril-client-cli/Cargo.toml +++ b/mithril-client-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-client-cli" -version = "0.12.21" +version = "0.12.22" description = "A Mithril Client" authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-client/Cargo.toml b/mithril-client/Cargo.toml index 13a71d57a8a..3fc396aef28 100644 --- a/mithril-client/Cargo.toml +++ b/mithril-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-client" -version = "0.12.21" +version = "0.12.22" description = "Mithril client library" authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-common/Cargo.toml b/mithril-common/Cargo.toml index 0f5a23f20cb..a006c7b5136 100644 --- a/mithril-common/Cargo.toml +++ b/mithril-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-common" -version = "0.6.8" +version = "0.6.9" description = "Common types, interfaces, and utilities for Mithril nodes." authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-signer/Cargo.toml b/mithril-signer/Cargo.toml index 883e9119d63..1c1230bc888 100644 --- a/mithril-signer/Cargo.toml +++ b/mithril-signer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-signer" -version = "0.2.259" +version = "0.2.260" description = "A Mithril Signer" authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-test-lab/mithril-devnet/VERSION b/mithril-test-lab/mithril-devnet/VERSION index 7927ecc6f68..cd63d8f1788 100644 --- a/mithril-test-lab/mithril-devnet/VERSION +++ b/mithril-test-lab/mithril-devnet/VERSION @@ -1,2 +1,2 @@ -0.4.13 +0.4.14 diff --git a/mithril-test-lab/mithril-end-to-end/Cargo.toml b/mithril-test-lab/mithril-end-to-end/Cargo.toml index 54802e4d462..ae23bccf85a 100644 --- a/mithril-test-lab/mithril-end-to-end/Cargo.toml +++ b/mithril-test-lab/mithril-end-to-end/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-end-to-end" -version = "0.4.96" +version = "0.4.97" authors = { workspace = true } edition = { workspace = true } documentation = { workspace = true }