Skip to content

Commit b3cf7c3

Browse files
committed
refactor(client-lib): remove compute_merkle_proof since logic is moved to compute_cardano_database_message
1 parent fc6db1f commit b3cf7c3

File tree

6 files changed

+7
-215
lines changed

6 files changed

+7
-215
lines changed

mithril-client-cli/src/commands/cardano_db/download/v2.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,6 @@ impl PreparedCardanoDbV2Download {
139139
)
140140
})?;
141141

142-
// let merkle_proof = shared_steps::compute_verify_merkle_proof(
143-
// 5,
144-
// &progress_printer,
145-
// &client,
146-
// &certificate,
147-
// &cardano_db_message,
148-
// &restoration_options.immutable_file_range,
149-
// &restoration_options.db_dir,
150-
// &verified_digests,
151-
// )
152-
// .await?;
153-
154142
let message = shared_steps::compute_cardano_db_snapshot_message(
155143
5,
156144
&progress_printer,

mithril-client-cli/src/commands/cardano_db/shared_steps.rs

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::path::Path;
66
use mithril_client::{
77
CardanoDatabaseSnapshot, Client, MessageBuilder, MithrilCertificate, MithrilResult,
88
cardano_database_client::{ImmutableFileRange, VerifiedDigests},
9-
common::{ImmutableFileNumber, MKProof, ProtocolMessage},
9+
common::{ImmutableFileNumber, ProtocolMessage},
1010
};
1111

1212
use crate::utils::{CardanoDbUtils, ProgressPrinter};
@@ -63,36 +63,6 @@ pub async fn download_and_verify_digests(
6363
Ok(verified_digests)
6464
}
6565

66-
/// Computes and verifies the Merkle proof for the given certificate and database snapshot.
67-
pub async fn compute_verify_merkle_proof(
68-
step_number: u16,
69-
progress_printer: &ProgressPrinter,
70-
client: &Client,
71-
certificate: &MithrilCertificate,
72-
cardano_database_snapshot: &CardanoDatabaseSnapshot,
73-
immutable_file_range: &ImmutableFileRange,
74-
unpacked_dir: &Path,
75-
verified_digests: &VerifiedDigests,
76-
) -> MithrilResult<MKProof> {
77-
progress_printer.report_step(step_number, "Computing and verifying the Merkle proof…")?;
78-
let merkle_proof = client
79-
.cardano_database_v2()
80-
.compute_merkle_proof(
81-
certificate,
82-
cardano_database_snapshot.beacon.immutable_file_number,
83-
immutable_file_range,
84-
Path::new(&unpacked_dir),
85-
verified_digests,
86-
)
87-
.await?;
88-
89-
merkle_proof
90-
.verify()
91-
.with_context(|| "Merkle proof verification failed")?;
92-
93-
Ok(merkle_proof)
94-
}
95-
9666
/// Computes the Cardano database snapshot message using the provided certificate and Merkle proof.
9767
pub async fn compute_cardano_db_snapshot_message(
9868
step_number: u16,

mithril-client-cli/src/commands/cardano_db/verify.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,6 @@ impl CardanoDbVerifyCommand {
113113
)
114114
.await?;
115115

116-
// let merkle_proof = shared_steps::compute_verify_merkle_proof(
117-
// 3,
118-
// &progress_printer,
119-
// &client,
120-
// &certificate,
121-
// &cardano_db_message,
122-
// &immutable_file_range,
123-
// db_dir,
124-
// &verified_digests,
125-
// )
126-
// .await?;
127-
128116
let message = shared_steps::compute_cardano_db_snapshot_message(
129117
3,
130118
&progress_printer,

mithril-client/src/cardano_database_client/api.rs

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@ use std::sync::Arc;
66
use slog::Logger;
77

88
#[cfg(feature = "fs")]
9-
use mithril_common::{
10-
crypto_helper::MKProof,
11-
entities::ImmutableFileNumber,
12-
messages::{CardanoDatabaseSnapshotMessage, CertificateMessage},
13-
};
9+
use mithril_common::messages::{CardanoDatabaseSnapshotMessage, CertificateMessage};
1410

1511
#[cfg(feature = "fs")]
1612
use mithril_cardano_node_internal_database::entities::ImmutableFile;
@@ -115,27 +111,6 @@ impl CardanoDatabaseClient {
115111
.await
116112
}
117113

118-
/// Compute the Merkle proof of membership for the given immutable file range.
119-
#[cfg(feature = "fs")]
120-
pub async fn compute_merkle_proof(
121-
&self,
122-
certificate: &CertificateMessage,
123-
last_immutable_file_number_from_beacon: ImmutableFileNumber,
124-
immutable_file_range: &ImmutableFileRange,
125-
database_dir: &Path,
126-
verified_digests: &VerifiedDigests,
127-
) -> MithrilResult<MKProof> {
128-
self.artifact_prover
129-
.compute_merkle_proof(
130-
certificate,
131-
last_immutable_file_number_from_beacon,
132-
immutable_file_range,
133-
database_dir,
134-
verified_digests,
135-
)
136-
.await
137-
}
138-
139114
/// Checks if immutable directory exists with at least one immutable in it
140115
#[cfg(feature = "fs")]
141116
pub fn check_has_immutables(&self, database_dir: &Path) -> MithrilResult<()> {

mithril-client/src/cardano_database_client/proving.rs

Lines changed: 5 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,10 @@ use std::{
77

88
use anyhow::{Context, anyhow};
99

10-
use mithril_cardano_node_internal_database::{
11-
digesters::{CardanoImmutableDigester, ImmutableDigester},
12-
entities::ImmutableFile,
13-
};
10+
use mithril_cardano_node_internal_database::entities::ImmutableFile;
1411
use mithril_common::{
15-
crypto_helper::{MKProof, MKTree, MKTreeNode, MKTreeStoreInMemory},
16-
entities::{
17-
DigestLocation, HexEncodedDigest, ImmutableFileName, ImmutableFileNumber,
18-
ProtocolMessagePartKey,
19-
},
12+
crypto_helper::{MKTree, MKTreeNode, MKTreeStoreInMemory},
13+
entities::{DigestLocation, HexEncodedDigest, ImmutableFileName, ProtocolMessagePartKey},
2014
messages::{
2115
CardanoDatabaseDigestListItemMessage, CardanoDatabaseSnapshotMessage, CertificateMessage,
2216
DigestsMessagePart,
@@ -30,8 +24,6 @@ use crate::{
3024
utils::{create_directory_if_not_exists, delete_directory, read_files_in_directory},
3125
};
3226

33-
use super::immutable_file_range::ImmutableFileRange;
34-
3527
/// Represents the verified digests and the Merkle tree built from them.
3628
pub struct VerifiedDigests {
3729
/// A map of immutable file names to their corresponding verified digests.
@@ -54,31 +46,6 @@ impl InternalArtifactProver {
5446
}
5547
}
5648

57-
/// Compute the Merkle proof of membership for the given immutable file range.
58-
pub async fn compute_merkle_proof(
59-
&self,
60-
certificate: &CertificateMessage,
61-
last_immutable_file_number_from_beacon: ImmutableFileNumber,
62-
immutable_file_range: &ImmutableFileRange,
63-
database_dir: &Path,
64-
verified_digests: &VerifiedDigests,
65-
) -> MithrilResult<MKProof> {
66-
let network = certificate.metadata.network.clone();
67-
let immutable_file_number_range =
68-
immutable_file_range.to_range_inclusive(last_immutable_file_number_from_beacon)?;
69-
let immutable_digester = CardanoImmutableDigester::new(network, None, self.logger.clone());
70-
let computed_digests = immutable_digester
71-
.compute_digests_for_range(database_dir, &immutable_file_number_range)
72-
.await?
73-
.entries
74-
.values()
75-
.map(MKTreeNode::from)
76-
.collect::<Vec<_>>();
77-
78-
verified_digests.merkle_tree.compute_proof(&computed_digests)
79-
// merkle_tree.compute_proof(&computed_digests)
80-
}
81-
8249
fn check_merkle_root_is_signed_by_certificate(
8350
certificate: &CertificateMessage,
8451
merkle_root: &MKTreeNode,
@@ -231,7 +198,6 @@ mod tests {
231198
use std::path::Path;
232199
use std::sync::Arc;
233200

234-
use mithril_cardano_node_internal_database::test::DummyCardanoDbBuilder;
235201
use mithril_common::{
236202
entities::{CardanoDbBeacon, Epoch, HexEncodedDigest},
237203
messages::CardanoDatabaseDigestListItemMessage,
@@ -245,61 +211,15 @@ mod tests {
245211

246212
use super::*;
247213

248-
mod compute_merkle_proof {
249-
250-
use std::ops::RangeInclusive;
251-
214+
mod download_and_verify_digests {
252215
use mithril_common::{
253216
StdResult,
254-
entities::{ImmutableFileNumber, ProtocolMessage, ProtocolMessagePartKey},
217+
entities::{ProtocolMessage, ProtocolMessagePartKey},
255218
messages::DigestsMessagePart,
256219
};
257220

258221
use super::*;
259222

260-
async fn prepare_db_and_verified_digests(
261-
dir_name: &str,
262-
beacon: &CardanoDbBeacon,
263-
immutable_file_range: &RangeInclusive<ImmutableFileNumber>,
264-
) -> (PathBuf, CertificateMessage, VerifiedDigests) {
265-
let certificate = CertificateMessage {
266-
hash: "cert-hash-123".to_string(),
267-
..CertificateMessage::dummy()
268-
};
269-
let cardano_db = DummyCardanoDbBuilder::new(dir_name)
270-
.with_immutables(&immutable_file_range.clone().collect::<Vec<_>>())
271-
.append_immutable_trio()
272-
.build();
273-
let database_dir = cardano_db.get_dir();
274-
let immutable_digester = CardanoImmutableDigester::new(
275-
certificate.metadata.network.to_string(),
276-
None,
277-
TestLogger::stdout(),
278-
);
279-
let computed_digests = immutable_digester
280-
.compute_digests_for_range(database_dir, immutable_file_range)
281-
.await
282-
.unwrap();
283-
284-
let digests = computed_digests
285-
.entries
286-
.iter()
287-
.map(|(immutable_file, digest)| (immutable_file.filename.clone(), digest.clone()))
288-
.collect::<BTreeMap<_, _>>();
289-
290-
let merkle_tree = immutable_digester
291-
.compute_merkle_tree(database_dir, beacon)
292-
.await
293-
.unwrap();
294-
295-
let verified_digests = VerifiedDigests {
296-
digests,
297-
merkle_tree,
298-
};
299-
300-
(database_dir.to_owned(), certificate, verified_digests)
301-
}
302-
303223
fn write_digest_file(
304224
digest_dir: &Path,
305225
digests: &BTreeMap<ImmutableFile, HexEncodedDigest>,
@@ -415,42 +335,6 @@ mod tests {
415335

416336
assert!(!InternalArtifactProver::digest_target_dir().exists());
417337
}
418-
419-
#[tokio::test]
420-
async fn compute_merkle_proof_succeeds() {
421-
let beacon = CardanoDbBeacon {
422-
epoch: Epoch(123),
423-
immutable_file_number: 10,
424-
};
425-
let immutable_file_range = 1..=15;
426-
let immutable_file_range_to_prove = ImmutableFileRange::Range(2, 4);
427-
let (database_dir, certificate, verified_digests) = prepare_db_and_verified_digests(
428-
"compute_merkle_proof_succeeds",
429-
&beacon,
430-
&immutable_file_range,
431-
)
432-
.await;
433-
let expected_merkle_root = verified_digests.merkle_tree.compute_root().unwrap();
434-
435-
let client =
436-
CardanoDatabaseClientDependencyInjector::new().build_cardano_database_client();
437-
438-
let merkle_proof = client
439-
.compute_merkle_proof(
440-
&certificate,
441-
beacon.immutable_file_number,
442-
&immutable_file_range_to_prove,
443-
&database_dir,
444-
&verified_digests,
445-
)
446-
.await
447-
.unwrap();
448-
449-
merkle_proof.verify().unwrap();
450-
451-
let merkle_proof_root = merkle_proof.root().to_owned();
452-
assert_eq!(expected_merkle_root, merkle_proof_root);
453-
}
454338
}
455339

456340
mod download_unpack_digest_file {

mithril-client/tests/cardano_db_snapshot_list_get_download_verify.rs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,6 @@ async fn cardano_db_snapshot_list_get_download_verify() {
139139
.await
140140
.unwrap();
141141

142-
// let merkle_proof = client
143-
// .cardano_database_v2()
144-
// .compute_merkle_proof(
145-
// &certificate,
146-
// cardano_db_snapshot.beacon.immutable_file_number,
147-
// &immutable_file_range,
148-
// &unpacked_dir,
149-
// &verified_digests,
150-
// )
151-
// .await
152-
// .expect("Computing merkle proof should not fail");
153-
// merkle_proof.verify().expect("Merkle proof should be valid"); //TODO verify?
154-
155142
let message = MessageBuilder::new()
156143
.compute_cardano_database_message(
157144
&certificate,

0 commit comments

Comments
 (0)