Skip to content

Commit a956b7d

Browse files
committed
feat: parallel sub Merkle tree computation in proof computation
1 parent 81f3bc5 commit a956b7d

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ mithril-doc = { path = "../internal/mithril-doc" }
3131
mithril-persistence = { path = "../internal/mithril-persistence" }
3232
openssl = { version = "0.10.63", features = ["vendored"], optional = true }
3333
openssl-probe = { version = "0.1.5", optional = true }
34+
rayon = "1.10.0"
3435
reqwest = { version = "0.12.0", features = ["json"] }
3536
semver = "1.0.21"
3637
serde = { version = "1.0.196", features = ["derive"] }

mithril-aggregator/src/services/prover.rs

+8-5
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,14 @@ impl ProverService for MithrilProverService {
128128
.await?;
129129

130130
// 2 - Compute block ranges sub Merkle trees
131-
let mut mk_trees = BTreeMap::new();
132-
for (block_range, transactions) in block_range_transactions {
133-
let mk_tree = MKTree::new(&transactions)?;
134-
mk_trees.insert(block_range, mk_tree);
135-
}
131+
let mk_trees: StdResult<Vec<(BlockRange, MKTree)>> = block_range_transactions
132+
.into_par_iter()
133+
.map(|(block_range, transactions)| {
134+
let mk_tree = MKTree::new(&transactions)?;
135+
Ok((block_range, mk_tree))
136+
})
137+
.collect();
138+
let mk_trees = BTreeMap::from_iter(mk_trees?);
136139

137140
// 3 - Compute block range roots Merkle map
138141
let mut mk_map = self

0 commit comments

Comments
 (0)