mithril_aggregator/dependency_injection/builder/protocol/
proving.rs1use std::sync::Arc;
2
3use mithril_common::crypto_helper::MKTreeStoreInMemory;
4
5use crate::dependency_injection::{DependenciesBuilder, Result};
6use crate::get_dependency;
7use crate::services::{
8 LegacyMithrilProverService, LegacyProverService, MithrilProverService, ProverService,
9};
10impl DependenciesBuilder {
11 pub async fn build_prover_service(&mut self) -> Result<Arc<dyn ProverService>> {
13 let mk_map_pool_size = self
14 .configuration
15 .cardano_blocks_transactions_prover_cache_pool_size();
16 let transaction_retriever = self.get_chain_data_repository().await?;
17 let block_range_root_retriever = self.get_chain_data_repository().await?;
18 let logger = self.root_logger();
19 let prover_service = MithrilProverService::<MKTreeStoreInMemory>::new(
20 transaction_retriever,
21 block_range_root_retriever,
22 mk_map_pool_size,
23 logger,
24 );
25
26 Ok(Arc::new(prover_service))
27 }
28
29 pub async fn get_prover_service(&mut self) -> Result<Arc<dyn ProverService>> {
31 get_dependency!(self.prover_service)
32 }
33
34 pub async fn build_legacy_prover_service(&mut self) -> Result<Arc<dyn LegacyProverService>> {
36 let mk_map_pool_size = self.configuration.cardano_transactions_prover_cache_pool_size();
37 let transaction_retriever = self.get_chain_data_repository().await?;
38 let block_range_root_retriever = self.get_chain_data_repository().await?;
39 let logger = self.root_logger();
40 let prover_service = LegacyMithrilProverService::<MKTreeStoreInMemory>::new(
41 transaction_retriever,
42 block_range_root_retriever,
43 mk_map_pool_size,
44 logger,
45 );
46
47 Ok(Arc::new(prover_service))
48 }
49
50 pub async fn get_legacy_prover_service(&mut self) -> Result<Arc<dyn LegacyProverService>> {
52 get_dependency!(self.legacy_prover_service)
53 }
54}