snarkvm_ledger_store/helpers/memory/
consensus.rs1use crate::{
17 BlockStore,
18 ConsensusStorage,
19 FinalizeStore,
20 helpers::memory::{BlockMemory, FinalizeMemory, TransactionMemory, TransitionMemory},
21};
22use console::prelude::*;
23
24use aleo_std_storage::StorageMode;
25
26#[derive(Clone)]
28pub struct ConsensusMemory<N: Network> {
29 finalize_store: FinalizeStore<N, FinalizeMemory<N>>,
31 block_store: BlockStore<N, BlockMemory<N>>,
33}
34
35#[rustfmt::skip]
36impl<N: Network> ConsensusStorage<N> for ConsensusMemory<N> {
37 type FinalizeStorage = FinalizeMemory<N>;
38 type BlockStorage = BlockMemory<N>;
39 type TransactionStorage = TransactionMemory<N>;
40 type TransitionStorage = TransitionMemory<N>;
41
42 fn open<S: Into<StorageMode>>(storage: S) -> Result<Self> {
44 let storage = storage.into();
45 let finalize_store = FinalizeStore::<N, FinalizeMemory<N>>::open(storage.clone())?;
47 let block_store = BlockStore::<N, BlockMemory<N>>::open(storage)?;
49 Ok(Self {
51 finalize_store,
52 block_store,
53 })
54 }
55
56 fn finalize_store(&self) -> &FinalizeStore<N, Self::FinalizeStorage> {
58 &self.finalize_store
59 }
60
61 fn block_store(&self) -> &BlockStore<N, Self::BlockStorage> {
63 &self.block_store
64 }
65}