pub trait BlockStorage<N: Network>:
'static
+ Clone
+ Send
+ Sync {
Show 75 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, Solutions<N>>;
type SolutionIDsMap: for<'a> Map<'a, SolutionID<N>, u32>;
type AbortedSolutionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<SolutionID<N>>>;
type AbortedSolutionHeightsMap: for<'a> Map<'a, SolutionID<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<N>, Vec<FinalizeOperation<N>>)>;
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<S: Clone + Into<StorageMode>>(storage: S) -> 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 solution_ids_map(&self) -> &Self::SolutionIDsMap;
fn aborted_solution_ids_map(&self) -> &Self::AbortedSolutionIDsMap;
fn aborted_solution_heights_map(&self) -> &Self::AbortedSolutionHeightsMap;
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 storage_mode(&self) -> &StorageMode { ... }
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 pause_atomic_writes(&self) -> Result<()> { ... }
fn unpause_atomic_writes<const DISCARD_BATCH: bool>(&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_solution_id(
&self,
solution_id: &SolutionID<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<Solutions<N>> { ... }
fn get_solution(&self, solution_id: &SolutionID<N>) -> Result<Solution<N>> { ... }
fn get_block_aborted_solution_ids(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Vec<SolutionID<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§
Sourcetype StateRootMap: for<'a> Map<'a, u32, N::StateRoot>
type StateRootMap: for<'a> Map<'a, u32, N::StateRoot>
The mapping of block height
to state root
.
Sourcetype ReverseStateRootMap: for<'a> Map<'a, N::StateRoot, u32>
type ReverseStateRootMap: for<'a> Map<'a, N::StateRoot, u32>
The mapping of state root
to block height
.
Sourcetype ReverseIDMap: for<'a> Map<'a, N::BlockHash, u32>
type ReverseIDMap: for<'a> Map<'a, N::BlockHash, u32>
The mapping of block hash
to block height
.
Sourcetype HeaderMap: for<'a> Map<'a, N::BlockHash, Header<N>>
type HeaderMap: for<'a> Map<'a, N::BlockHash, Header<N>>
The mapping of block hash
to block header
.
Sourcetype AuthorityMap: for<'a> Map<'a, N::BlockHash, Authority<N>>
type AuthorityMap: for<'a> Map<'a, N::BlockHash, Authority<N>>
The mapping of block hash
to block authority
.
Sourcetype CertificateMap: for<'a> Map<'a, Field<N>, (u32, u64)>
type CertificateMap: for<'a> Map<'a, Field<N>, (u32, u64)>
The mapping of certificate ID
to (block height
, round height
).
Sourcetype RatificationsMap: for<'a> Map<'a, N::BlockHash, Ratifications<N>>
type RatificationsMap: for<'a> Map<'a, N::BlockHash, Ratifications<N>>
The mapping of block hash
to block ratifications
.
Sourcetype SolutionsMap: for<'a> Map<'a, N::BlockHash, Solutions<N>>
type SolutionsMap: for<'a> Map<'a, N::BlockHash, Solutions<N>>
The mapping of block hash
to block solutions
.
Sourcetype SolutionIDsMap: for<'a> Map<'a, SolutionID<N>, u32>
type SolutionIDsMap: for<'a> Map<'a, SolutionID<N>, u32>
The mapping of solution ID
to block height
.
Sourcetype AbortedSolutionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<SolutionID<N>>>
type AbortedSolutionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<SolutionID<N>>>
The mapping of block hash
to [aborted solution ID]
.
Sourcetype AbortedSolutionHeightsMap: for<'a> Map<'a, SolutionID<N>, u32>
type AbortedSolutionHeightsMap: for<'a> Map<'a, SolutionID<N>, u32>
The mapping of aborted solution ID
to block height
.
Sourcetype TransactionsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>
type TransactionsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>
The mapping of block hash
to [transaction ID]
.
Sourcetype AbortedTransactionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>
type AbortedTransactionIDsMap: for<'a> Map<'a, N::BlockHash, Vec<N::TransactionID>>
The mapping of block hash
to [aborted transaction ID]
.
Sourcetype RejectedOrAbortedTransactionIDMap: for<'a> Map<'a, N::TransactionID, N::BlockHash>
type RejectedOrAbortedTransactionIDMap: for<'a> Map<'a, N::TransactionID, N::BlockHash>
The mapping of rejected or aborted transaction ID
to block hash
.
Sourcetype ConfirmedTransactionsMap: for<'a> Map<'a, N::TransactionID, (N::BlockHash, ConfirmedTxType<N>, Vec<FinalizeOperation<N>>)>
type ConfirmedTransactionsMap: for<'a> Map<'a, N::TransactionID, (N::BlockHash, ConfirmedTxType<N>, Vec<FinalizeOperation<N>>)>
The mapping of transaction ID
to (block hash, confirmed tx type, finalize operations)
.
Sourcetype RejectedDeploymentOrExecutionMap: for<'a> Map<'a, Field<N>, Rejected<N>>
type RejectedDeploymentOrExecutionMap: for<'a> Map<'a, Field<N>, Rejected<N>>
The rejected deployment or execution map.
Sourcetype TransactionStorage: TransactionStorage<N, TransitionStorage = Self::TransitionStorage>
type TransactionStorage: TransactionStorage<N, TransitionStorage = Self::TransitionStorage>
The transaction storage.
Sourcetype TransitionStorage: TransitionStorage<N>
type TransitionStorage: TransitionStorage<N>
The transition storage.
Required Methods§
Sourcefn open<S: Clone + Into<StorageMode>>(storage: S) -> Result<Self>
fn open<S: Clone + Into<StorageMode>>(storage: S) -> Result<Self>
Initializes the block storage.
Sourcefn state_root_map(&self) -> &Self::StateRootMap
fn state_root_map(&self) -> &Self::StateRootMap
Returns the state root map.
Sourcefn reverse_state_root_map(&self) -> &Self::ReverseStateRootMap
fn reverse_state_root_map(&self) -> &Self::ReverseStateRootMap
Returns the reverse state root map.
Sourcefn reverse_id_map(&self) -> &Self::ReverseIDMap
fn reverse_id_map(&self) -> &Self::ReverseIDMap
Returns the reverse ID map.
Sourcefn header_map(&self) -> &Self::HeaderMap
fn header_map(&self) -> &Self::HeaderMap
Returns the header map.
Returns the authority map.
Sourcefn certificate_map(&self) -> &Self::CertificateMap
fn certificate_map(&self) -> &Self::CertificateMap
Returns the certificate map.
Sourcefn ratifications_map(&self) -> &Self::RatificationsMap
fn ratifications_map(&self) -> &Self::RatificationsMap
Returns the ratifications map.
Sourcefn solutions_map(&self) -> &Self::SolutionsMap
fn solutions_map(&self) -> &Self::SolutionsMap
Returns the solutions map.
Sourcefn solution_ids_map(&self) -> &Self::SolutionIDsMap
fn solution_ids_map(&self) -> &Self::SolutionIDsMap
Returns the solution IDs map.
Sourcefn aborted_solution_ids_map(&self) -> &Self::AbortedSolutionIDsMap
fn aborted_solution_ids_map(&self) -> &Self::AbortedSolutionIDsMap
Returns the aborted solution IDs map.
Sourcefn aborted_solution_heights_map(&self) -> &Self::AbortedSolutionHeightsMap
fn aborted_solution_heights_map(&self) -> &Self::AbortedSolutionHeightsMap
Returns the aborted solution heights map.
Sourcefn transactions_map(&self) -> &Self::TransactionsMap
fn transactions_map(&self) -> &Self::TransactionsMap
Returns the accepted transactions map.
Sourcefn aborted_transaction_ids_map(&self) -> &Self::AbortedTransactionIDsMap
fn aborted_transaction_ids_map(&self) -> &Self::AbortedTransactionIDsMap
Returns the aborted transaction IDs map.
Sourcefn rejected_or_aborted_transaction_id_map(
&self,
) -> &Self::RejectedOrAbortedTransactionIDMap
fn rejected_or_aborted_transaction_id_map( &self, ) -> &Self::RejectedOrAbortedTransactionIDMap
Returns the rejected or aborted transaction ID map.
Sourcefn confirmed_transactions_map(&self) -> &Self::ConfirmedTransactionsMap
fn confirmed_transactions_map(&self) -> &Self::ConfirmedTransactionsMap
Returns the confirmed transactions map.
Sourcefn rejected_deployment_or_execution_map(
&self,
) -> &Self::RejectedDeploymentOrExecutionMap
fn rejected_deployment_or_execution_map( &self, ) -> &Self::RejectedDeploymentOrExecutionMap
Returns the rejected deployment or execution map.
Sourcefn transaction_store(&self) -> &TransactionStore<N, Self::TransactionStorage>
fn transaction_store(&self) -> &TransactionStore<N, Self::TransactionStorage>
Returns the transaction store.
Provided Methods§
Sourcefn transition_store(&self) -> &TransitionStore<N, Self::TransitionStorage>
fn transition_store(&self) -> &TransitionStore<N, Self::TransitionStorage>
Returns the transition store.
Sourcefn storage_mode(&self) -> &StorageMode
fn storage_mode(&self) -> &StorageMode
Returns the storage mode.
Sourcefn start_atomic(&self)
fn start_atomic(&self)
Starts an atomic batch write operation.
Sourcefn is_atomic_in_progress(&self) -> bool
fn is_atomic_in_progress(&self) -> bool
Checks if an atomic batch is in progress.
Sourcefn atomic_checkpoint(&self)
fn atomic_checkpoint(&self)
Checkpoints the atomic batch.
Sourcefn clear_latest_checkpoint(&self)
fn clear_latest_checkpoint(&self)
Clears the latest atomic batch checkpoint.
Sourcefn atomic_rewind(&self)
fn atomic_rewind(&self)
Rewinds the atomic batch to the previous checkpoint.
Sourcefn abort_atomic(&self)
fn abort_atomic(&self)
Aborts an atomic batch write operation.
Sourcefn finish_atomic(&self) -> Result<()>
fn finish_atomic(&self) -> Result<()>
Finishes an atomic batch write operation.
Sourcefn pause_atomic_writes(&self) -> Result<()>
fn pause_atomic_writes(&self) -> Result<()>
Pauses atomic writes.
Sourcefn unpause_atomic_writes<const DISCARD_BATCH: bool>(&self) -> Result<()>
fn unpause_atomic_writes<const DISCARD_BATCH: bool>(&self) -> Result<()>
Unpauses atomic writes.
Sourcefn insert(&self, state_root: N::StateRoot, block: &Block<N>) -> Result<()>
fn insert(&self, state_root: N::StateRoot, block: &Block<N>) -> Result<()>
Stores the given (state root, block)
pair into storage.
Sourcefn remove(&self, block_hash: &N::BlockHash) -> Result<()>
fn remove(&self, block_hash: &N::BlockHash) -> Result<()>
Removes the block for the given block hash
.
Sourcefn contains_transaction_id(
&self,
transaction_id: &N::TransactionID,
) -> Result<bool>
fn contains_transaction_id( &self, transaction_id: &N::TransactionID, ) -> Result<bool>
Returns true
if the given transaction ID exists.
Sourcefn contains_rejected_or_aborted_transaction_id(
&self,
transaction_id: &N::TransactionID,
) -> Result<bool>
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.
Sourcefn contains_rejected_deployment_or_execution_id(
&self,
rejected_id: &Field<N>,
) -> Result<bool>
fn contains_rejected_deployment_or_execution_id( &self, rejected_id: &Field<N>, ) -> Result<bool>
Returns true
if the given rejected deployment or execution ID.
Sourcefn find_block_height_from_state_root(
&self,
state_root: N::StateRoot,
) -> Result<Option<u32>>
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
.
Sourcefn find_block_hash(
&self,
transaction_id: &N::TransactionID,
) -> Result<Option<N::BlockHash>>
fn find_block_hash( &self, transaction_id: &N::TransactionID, ) -> Result<Option<N::BlockHash>>
Returns the block hash that contains the given transaction ID
.
Sourcefn find_block_height_from_solution_id(
&self,
solution_id: &SolutionID<N>,
) -> Result<Option<u32>>
fn find_block_height_from_solution_id( &self, solution_id: &SolutionID<N>, ) -> Result<Option<u32>>
Returns the block height that contains the given solution ID
.
Sourcefn get_state_root(&self, block_height: u32) -> Result<Option<N::StateRoot>>
fn get_state_root(&self, block_height: u32) -> Result<Option<N::StateRoot>>
Returns the state root that contains the given block height
.
Sourcefn get_state_path_for_commitment(
&self,
commitment: &Field<N>,
block_tree: &BlockTree<N>,
) -> Result<StatePath<N>>
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
.
Sourcefn get_previous_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>
fn get_previous_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>
Returns the previous block hash of the given block height
.
Sourcefn get_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>
fn get_block_hash(&self, height: u32) -> Result<Option<N::BlockHash>>
Returns the block hash for the given block height
.
Sourcefn get_block_height(&self, block_hash: &N::BlockHash) -> Result<Option<u32>>
fn get_block_height(&self, block_hash: &N::BlockHash) -> Result<Option<u32>>
Returns the block height for the given block hash
.
Sourcefn get_block_header(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Header<N>>>
fn get_block_header( &self, block_hash: &N::BlockHash, ) -> Result<Option<Header<N>>>
Returns the block header for the given block hash
.
Returns the block authority for the given block hash
.
Sourcefn get_batch_certificate(
&self,
certificate_id: &Field<N>,
) -> Result<Option<BatchCertificate<N>>>
fn get_batch_certificate( &self, certificate_id: &Field<N>, ) -> Result<Option<BatchCertificate<N>>>
Returns the batch certificate for the given certificate ID
.
Sourcefn get_block_ratifications(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Ratifications<N>>>
fn get_block_ratifications( &self, block_hash: &N::BlockHash, ) -> Result<Option<Ratifications<N>>>
Returns the block ratifications for the given block hash
.
Sourcefn get_block_solutions(&self, block_hash: &N::BlockHash) -> Result<Solutions<N>>
fn get_block_solutions(&self, block_hash: &N::BlockHash) -> Result<Solutions<N>>
Returns the block solutions for the given block hash
.
Sourcefn get_solution(&self, solution_id: &SolutionID<N>) -> Result<Solution<N>>
fn get_solution(&self, solution_id: &SolutionID<N>) -> Result<Solution<N>>
Returns the prover solution for the given solution ID.
Sourcefn get_block_aborted_solution_ids(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Vec<SolutionID<N>>>>
fn get_block_aborted_solution_ids( &self, block_hash: &N::BlockHash, ) -> Result<Option<Vec<SolutionID<N>>>>
Returns the block aborted solution IDs for the given block hash
.
Sourcefn get_block_transactions(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Transactions<N>>>
fn get_block_transactions( &self, block_hash: &N::BlockHash, ) -> Result<Option<Transactions<N>>>
Returns the block transactions for the given block hash
.
Sourcefn get_block_aborted_transaction_ids(
&self,
block_hash: &N::BlockHash,
) -> Result<Option<Vec<N::TransactionID>>>
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
.
Sourcefn get_transaction(
&self,
transaction_id: &N::TransactionID,
) -> Result<Option<Transaction<N>>>
fn get_transaction( &self, transaction_id: &N::TransactionID, ) -> Result<Option<Transaction<N>>>
Returns the transaction for the given transaction ID
.
Sourcefn get_confirmed_transaction(
&self,
transaction_id: N::TransactionID,
) -> Result<Option<ConfirmedTransaction<N>>>
fn get_confirmed_transaction( &self, transaction_id: N::TransactionID, ) -> Result<Option<ConfirmedTransaction<N>>>
Returns the confirmed transaction for the given transaction ID
.
Sourcefn get_unconfirmed_transaction(
&self,
transaction_id: &N::TransactionID,
) -> Result<Option<Transaction<N>>>
fn get_unconfirmed_transaction( &self, transaction_id: &N::TransactionID, ) -> Result<Option<Transaction<N>>>
Returns the unconfirmed transaction for the given transaction ID
.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.