mithril_aggregator/dependency_injection/builder/protocol/
proving.rs

1use std::sync::Arc;
2
3use mithril_common::crypto_helper::MKTreeStoreInMemory;
4
5use crate::dependency_injection::{DependenciesBuilder, Result};
6use crate::get_dependency;
7use crate::services::{MithrilProverService, ProverService};
8impl DependenciesBuilder {
9    /// Build Prover service
10    pub async fn build_prover_service(&mut self) -> Result<Arc<dyn ProverService>> {
11        let mk_map_pool_size = self.configuration.cardano_transactions_prover_cache_pool_size();
12        let transaction_retriever = self.get_transaction_repository().await?;
13        let block_range_root_retriever = self.get_transaction_repository().await?;
14        let logger = self.root_logger();
15        let prover_service = MithrilProverService::<MKTreeStoreInMemory>::new(
16            transaction_retriever,
17            block_range_root_retriever,
18            mk_map_pool_size,
19            logger,
20        );
21
22        Ok(Arc::new(prover_service))
23    }
24
25    /// [ProverService] service
26    pub async fn get_prover_service(&mut self) -> Result<Arc<dyn ProverService>> {
27        get_dependency!(self.prover_service)
28    }
29}