pub trait BlockStorage<N: Network>: 'static + Clone + Send + Sync {
Show 68 associated items type StateRootMap: for<'a> Map<'a, u32, N::StateRoot>; type ReverseStateRootMap: for<'a> Map<'a, N::StateRoot, u32>; type IDMap: for<'a> Map<'a, u32, N::BlockHash>; type ReverseIDMap: for<'a> Map<'a, N::BlockHash, u32>; type HeaderMap: for<'a> Map<'a, N::BlockHash, Header<N>>; type AuthorityMap: for<'a> Map<'a, N::BlockHash, Authority<N>>; type CertificateMap: for<'a> Map<'a, Field<N>, (u32, u64)>; type RatificationsMap: for<'a> Map<'a, N::BlockHash, Ratifications<N>>; type SolutionsMap: for<'a> Map<'a, N::BlockHash, Option<CoinbaseSolution<N>>>; type PuzzleCommitmentsMap: for<'a> Map<'a, PuzzleCommitment<N>, u32>; type TransactionsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>; type AbortedTransactionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>; type RejectedOrAbortedTransactionIDMap: for<'a> Map<'a, N::TransactionID, N::BlockHash>; type ConfirmedTransactionsMap: for<'a> Map<'a, N::TransactionID, (N::BlockHash, ConfirmedTxType, Vec<u8>)>; type RejectedDeploymentOrExecutionMap: for<'a> Map<'a, Field<N>, Rejected<N>>; type TransactionStorage: TransactionStorage<N, TransitionStorage = Self::TransitionStorage>; type TransitionStorage: TransitionStorage<N>; // Required methods fn open(dev: Option<u16>) -> Result<Self>; fn state_root_map(&self) -> &Self::StateRootMap; fn reverse_state_root_map(&self) -> &Self::ReverseStateRootMap; fn id_map(&self) -> &Self::IDMap; fn reverse_id_map(&self) -> &Self::ReverseIDMap; fn header_map(&self) -> &Self::HeaderMap; fn authority_map(&self) -> &Self::AuthorityMap; fn certificate_map(&self) -> &Self::CertificateMap; fn ratifications_map(&self) -> &Self::RatificationsMap; fn solutions_map(&self) -> &Self::SolutionsMap; fn puzzle_commitments_map(&self) -> &Self::PuzzleCommitmentsMap; fn transactions_map(&self) -> &Self::TransactionsMap; fn aborted_transaction_ids_map(&self) -> &Self::AbortedTransactionIDsMap; fn rejected_or_aborted_transaction_id_map( &self ) -> &Self::RejectedOrAbortedTransactionIDMap; fn confirmed_transactions_map(&self) -> &Self::ConfirmedTransactionsMap; fn rejected_deployment_or_execution_map( &self ) -> &Self::RejectedDeploymentOrExecutionMap; fn transaction_store( &self ) -> &TransactionStore<N, Self::TransactionStorage>; // Provided methods fn transition_store(&self) -> &TransitionStore<N, Self::TransitionStorage> { ... } fn dev(&self) -> Option<u16> { ... } fn start_atomic(&self) { ... } fn is_atomic_in_progress(&self) -> bool { ... } fn atomic_checkpoint(&self) { ... } fn clear_latest_checkpoint(&self) { ... } fn atomic_rewind(&self) { ... } fn abort_atomic(&self) { ... } fn finish_atomic(&self) -> Result<()> { ... } fn insert(&self, state_root: N::StateRoot, block: &Block<N>) -> Result<()> { ... } fn remove(&self, block_hash: &N::BlockHash) -> Result<()> { ... } fn contains_transaction_id( &self, transaction_id: &N::TransactionID ) -> Result<bool> { ... } fn contains_rejected_or_aborted_transaction_id( &self, transaction_id: &N::TransactionID ) -> Result<bool> { ... } fn contains_rejected_deployment_or_execution_id( &self, rejected_id: &Field<N> ) -> Result<bool> { ... } fn find_block_height_from_state_root( &self, state_root: N::StateRoot ) -> Result<Option<u32>> { ... } fn find_block_hash( &self, transaction_id: &N::TransactionID ) -> Result<Option<N::BlockHash>> { ... } fn find_block_height_from_puzzle_commitment( &self, puzzle_commitment: &PuzzleCommitment<N> ) -> Result<Option<u32>> { ... } fn get_state_root(&self, block_height: u32) -> Result<Option<N::StateRoot>> { ... } fn get_state_path_for_commitment( &self, commitment: &Field<N>, block_tree: &BlockTree<N> ) -> Result<StatePath<N>> { ... } fn get_previous_block_hash( &self, height: u32 ) -> Result<Option<N::BlockHash>> { ... } fn get_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>> { ... } fn get_block_height(&self, block_hash: &N::BlockHash) -> Result<Option<u32>> { ... } fn get_block_header( &self, block_hash: &N::BlockHash ) -> Result<Option<Header<N>>> { ... } fn get_block_authority( &self, block_hash: &N::BlockHash ) -> Result<Option<Authority<N>>> { ... } fn get_batch_certificate( &self, certificate_id: &Field<N> ) -> Result<Option<BatchCertificate<N>>> { ... } fn get_block_ratifications( &self, block_hash: &N::BlockHash ) -> Result<Option<Ratifications<N>>> { ... } fn get_block_solutions( &self, block_hash: &N::BlockHash ) -> Result<Option<CoinbaseSolution<N>>> { ... } fn get_solution( &self, puzzle_commitment: &PuzzleCommitment<N> ) -> Result<ProverSolution<N>> { ... } fn get_block_transactions( &self, block_hash: &N::BlockHash ) -> Result<Option<Transactions<N>>> { ... } fn get_block_aborted_transaction_ids( &self, block_hash: &N::BlockHash ) -> Result<Option<Vec<N::TransactionID>>> { ... } fn get_transaction( &self, transaction_id: &N::TransactionID ) -> Result<Option<Transaction<N>>> { ... } fn get_confirmed_transaction( &self, transaction_id: N::TransactionID ) -> Result<Option<ConfirmedTransaction<N>>> { ... } fn get_unconfirmed_transaction( &self, transaction_id: &N::TransactionID ) -> Result<Option<Transaction<N>>> { ... } fn get_block(&self, block_hash: &N::BlockHash) -> Result<Option<Block<N>>> { ... }
}
Expand description

A trait for block storage.

Required Associated Types§

source

type StateRootMap: for<'a> Map<'a, u32, N::StateRoot>

The mapping of block height to state root.

source

type ReverseStateRootMap: for<'a> Map<'a, N::StateRoot, u32>

The mapping of state root to block height.

source

type IDMap: for<'a> Map<'a, u32, N::BlockHash>

The mapping of block height to block hash.

source

type ReverseIDMap: for<'a> Map<'a, N::BlockHash, u32>

The mapping of block hash to block height.

source

type HeaderMap: for<'a> Map<'a, N::BlockHash, Header<N>>

The mapping of block hash to block header.

source

type AuthorityMap: for<'a> Map<'a, N::BlockHash, Authority<N>>

The mapping of block hash to block authority.

source

type CertificateMap: for<'a> Map<'a, Field<N>, (u32, u64)>

The mapping of certificate ID to (block height, round height).

source

type RatificationsMap: for<'a> Map<'a, N::BlockHash, Ratifications<N>>

The mapping of block hash to block ratifications.

source

type SolutionsMap: for<'a> Map<'a, N::BlockHash, Option<CoinbaseSolution<N>>>

The mapping of block hash to block solutions.

source

type PuzzleCommitmentsMap: for<'a> Map<'a, PuzzleCommitment<N>, u32>

The mapping of puzzle commitment to block height.

source

type TransactionsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>

The mapping of block hash to [transaction ID].

source

type AbortedTransactionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>

The mapping of block hash to [aborted transaction ID].

source

type RejectedOrAbortedTransactionIDMap: for<'a> Map<'a, N::TransactionID, N::BlockHash>

The mapping of rejected or aborted transaction ID to block hash.

source

type ConfirmedTransactionsMap: for<'a> Map<'a, N::TransactionID, (N::BlockHash, ConfirmedTxType, Vec<u8>)>

The mapping of transaction ID to (block hash, confirmed tx type, confirmed blob). TODO (howardwu): For mainnet - With recent DB changes, to prevent breaking compatibility, include rejected (d or e) ID into ConfirmedTxType, and change from Vec<u8> to Vec<FinalizeOps>.

source

type RejectedDeploymentOrExecutionMap: for<'a> Map<'a, Field<N>, Rejected<N>>

The rejected deployment or execution map.

source

type TransactionStorage: TransactionStorage<N, TransitionStorage = Self::TransitionStorage>

The transaction storage.

source

type TransitionStorage: TransitionStorage<N>

The transition storage.

Required Methods§

source

fn open(dev: Option<u16>) -> Result<Self>

Initializes the block storage.

source

fn state_root_map(&self) -> &Self::StateRootMap

Returns the state root map.

source

fn reverse_state_root_map(&self) -> &Self::ReverseStateRootMap

Returns the reverse state root map.

source

fn id_map(&self) -> &Self::IDMap

Returns the ID map.

source

fn reverse_id_map(&self) -> &Self::ReverseIDMap

Returns the reverse ID map.

source

fn header_map(&self) -> &Self::HeaderMap

Returns the header map.

source

fn authority_map(&self) -> &Self::AuthorityMap

Returns the authority map.

source

fn certificate_map(&self) -> &Self::CertificateMap

Returns the certificate map.

source

fn ratifications_map(&self) -> &Self::RatificationsMap

Returns the ratifications map.

source

fn solutions_map(&self) -> &Self::SolutionsMap

Returns the solutions map.

source

fn puzzle_commitments_map(&self) -> &Self::PuzzleCommitmentsMap

Returns the puzzle commitments map.

source

fn transactions_map(&self) -> &Self::TransactionsMap

Returns the accepted transactions map.

source

fn aborted_transaction_ids_map(&self) -> &Self::AbortedTransactionIDsMap

Returns the aborted transaction IDs map.

source

fn rejected_or_aborted_transaction_id_map( &self ) -> &Self::RejectedOrAbortedTransactionIDMap

Returns the rejected or aborted transaction ID map.

source

fn confirmed_transactions_map(&self) -> &Self::ConfirmedTransactionsMap

Returns the confirmed transactions map.

source

fn rejected_deployment_or_execution_map( &self ) -> &Self::RejectedDeploymentOrExecutionMap

Returns the rejected deployment or execution map.

source

fn transaction_store(&self) -> &TransactionStore<N, Self::TransactionStorage>

Returns the transaction store.

Provided Methods§

source

fn transition_store(&self) -> &TransitionStore<N, Self::TransitionStorage>

Returns the transition store.

source

fn dev(&self) -> Option<u16>

Returns the optional development ID.

source

fn start_atomic(&self)

Starts an atomic batch write operation.

source

fn is_atomic_in_progress(&self) -> bool

Checks if an atomic batch is in progress.

source

fn atomic_checkpoint(&self)

Checkpoints the atomic batch.

source

fn clear_latest_checkpoint(&self)

Clears the latest atomic batch checkpoint.

source

fn atomic_rewind(&self)

Rewinds the atomic batch to the previous checkpoint.

source

fn abort_atomic(&self)

Aborts an atomic batch write operation.

source

fn finish_atomic(&self) -> Result<()>

Finishes an atomic batch write operation.

source

fn insert(&self, state_root: N::StateRoot, block: &Block<N>) -> Result<()>

Stores the given (state root, block) pair into storage.

source

fn remove(&self, block_hash: &N::BlockHash) -> Result<()>

Removes the block for the given block hash.

source

fn contains_transaction_id( &self, transaction_id: &N::TransactionID ) -> Result<bool>

Returns true if the given transaction ID exists.

source

fn contains_rejected_or_aborted_transaction_id( &self, transaction_id: &N::TransactionID ) -> Result<bool>

Returns true if the given rejected transaction ID or aborted transaction ID exists.

source

fn contains_rejected_deployment_or_execution_id( &self, rejected_id: &Field<N> ) -> Result<bool>

Returns true if the given rejected deployment or execution ID.

source

fn find_block_height_from_state_root( &self, state_root: N::StateRoot ) -> Result<Option<u32>>

Returns the block height that contains the given state root.

source

fn find_block_hash( &self, transaction_id: &N::TransactionID ) -> Result<Option<N::BlockHash>>

Returns the block hash that contains the given transaction ID.

source

fn find_block_height_from_puzzle_commitment( &self, puzzle_commitment: &PuzzleCommitment<N> ) -> Result<Option<u32>>

Returns the block height that contains the given puzzle commitment.

source

fn get_state_root(&self, block_height: u32) -> Result<Option<N::StateRoot>>

Returns the state root that contains the given block height.

source

fn get_state_path_for_commitment( &self, commitment: &Field<N>, block_tree: &BlockTree<N> ) -> Result<StatePath<N>>

Returns a state path for the given commitment.

source

fn get_previous_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>

Returns the previous block hash of the given block height.

source

fn get_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>

Returns the block hash for the given block height.

source

fn get_block_height(&self, block_hash: &N::BlockHash) -> Result<Option<u32>>

Returns the block height for the given block hash.

source

fn get_block_header( &self, block_hash: &N::BlockHash ) -> Result<Option<Header<N>>>

Returns the block header for the given block hash.

source

fn get_block_authority( &self, block_hash: &N::BlockHash ) -> Result<Option<Authority<N>>>

Returns the block authority for the given block hash.

source

fn get_batch_certificate( &self, certificate_id: &Field<N> ) -> Result<Option<BatchCertificate<N>>>

Returns the batch certificate for the given certificate ID.

source

fn get_block_ratifications( &self, block_hash: &N::BlockHash ) -> Result<Option<Ratifications<N>>>

Returns the block ratifications for the given block hash.

source

fn get_block_solutions( &self, block_hash: &N::BlockHash ) -> Result<Option<CoinbaseSolution<N>>>

Returns the block solutions for the given block hash.

source

fn get_solution( &self, puzzle_commitment: &PuzzleCommitment<N> ) -> Result<ProverSolution<N>>

Returns the prover solution for the given solution ID.

source

fn get_block_transactions( &self, block_hash: &N::BlockHash ) -> Result<Option<Transactions<N>>>

Returns the block transactions for the given block hash.

source

fn get_block_aborted_transaction_ids( &self, block_hash: &N::BlockHash ) -> Result<Option<Vec<N::TransactionID>>>

Returns the block aborted transaction IDs for the given block hash.

source

fn get_transaction( &self, transaction_id: &N::TransactionID ) -> Result<Option<Transaction<N>>>

Returns the transaction for the given transaction ID.

source

fn get_confirmed_transaction( &self, transaction_id: N::TransactionID ) -> Result<Option<ConfirmedTransaction<N>>>

Returns the confirmed transaction for the given transaction ID.

source

fn get_unconfirmed_transaction( &self, transaction_id: &N::TransactionID ) -> Result<Option<Transaction<N>>>

Returns the unconfirmed transaction for the given transaction ID.

source

fn get_block(&self, block_hash: &N::BlockHash) -> Result<Option<Block<N>>>

Returns the block for the given block hash.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<N: Network> BlockStorage<N> for BlockMemory<N>

§

type StateRootMap = MemoryMap<u32, <N as Network>::StateRoot>

§

type ReverseStateRootMap = MemoryMap<<N as Network>::StateRoot, u32>

§

type IDMap = MemoryMap<u32, <N as Network>::BlockHash>

§

type ReverseIDMap = MemoryMap<<N as Network>::BlockHash, u32>

§

type HeaderMap = MemoryMap<<N as Network>::BlockHash, Header<N>>

§

type AuthorityMap = MemoryMap<<N as Network>::BlockHash, Authority<N>>

§

type CertificateMap = MemoryMap<Field<N>, (u32, u64)>

§

type RatificationsMap = MemoryMap<<N as Network>::BlockHash, Ratifications<N>>

§

type SolutionsMap = MemoryMap<<N as Network>::BlockHash, Option<CoinbaseSolution<N>>>

§

type PuzzleCommitmentsMap = MemoryMap<PuzzleCommitment<N>, u32>

§

type TransactionsMap = MemoryMap<<N as Network>::BlockHash, Vec<<N as Network>::TransactionID>>

§

type AbortedTransactionIDsMap = MemoryMap<<N as Network>::BlockHash, Vec<<N as Network>::TransactionID>>

§

type RejectedOrAbortedTransactionIDMap = MemoryMap<<N as Network>::TransactionID, <N as Network>::BlockHash>

§

type ConfirmedTransactionsMap = MemoryMap<<N as Network>::TransactionID, (<N as Network>::BlockHash, ConfirmedTxType, Vec<u8>)>

§

type RejectedDeploymentOrExecutionMap = MemoryMap<Field<N>, Rejected<N>>

§

type TransactionStorage = TransactionMemory<N>

§

type TransitionStorage = TransitionMemory<N>