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::{
8    LegacyMithrilProverService, LegacyProverService, MithrilProverService, ProverService,
9};
10impl DependenciesBuilder {
11    /// Build Prover service
12    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    /// [ProverService] service
30    pub async fn get_prover_service(&mut self) -> Result<Arc<dyn ProverService>> {
31        get_dependency!(self.prover_service)
32    }
33
34    /// Build Legacy Prover service
35    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    /// [LegacyProverService] service
51    pub async fn get_legacy_prover_service(&mut self) -> Result<Arc<dyn LegacyProverService>> {
52        get_dependency!(self.legacy_prover_service)
53    }
54}