Expand description
State contextual verification and storage code for Zebra.
§Correctness
Await UTXO and block commit requests should be wrapped in a timeout, because:
- await UTXO requests wait for a block containing that UTXO, and
- contextual verification and state updates wait for all previous blocks.
Otherwise, verification of out-of-order and invalid blocks can hang indefinitely.
Re-exports§
pub use config::check_and_delete_old_databases;pub use config::check_and_delete_old_state_databases;pub use config::database_format_version_on_disk;pub use config::state_database_format_version_on_disk;pub use config::Config;pub use constants::state_database_format_version_in_code;pub use constants::MAX_BLOCK_REORG_HEIGHT;
Modules§
- check
- Consensus critical contextual checks
- config
- Cached state configuration for Zebra.
- constants
- Constants that impact state behaviour.
Structs§
- Chain
TipBlock - A chain tip block, with precalculated block data.
- Chain
TipChange - A chain tip change monitor.
- Chain
TipSender - A sender for changes to the non-finalized and finalized chain tips.
- Checkpoint
Verified Block - A block ready to be committed directly to the finalized state with
a small number of checks if compared with a
ContextuallyVerifiedBlock. - Clone
Error - A wrapper for type erased errors that is itself clonable and implements the Error trait
- Commit
Semantically Verified Block Request - Performs contextual validation of the given semantically verified block, committing it to the state if successful.
- Contextually
Verified Block - A contextually verified block, ready to be committed directly to the finalized state with no checks, if it becomes the root of the best non-finalized chain.
- Disk
Write Batch - Wrapper struct to ensure low-level database writes go through the correct API.
- Finalized
State - The finalized part of the chain state, stored in the db.
- GetBlock
Template Chain Info - A structure with the information needed from the state to build a
getblocktemplateRPC response. - Latest
Chain Tip - Efficient access to the state’s current best chain tip.
- MinedTx
- Information about a transaction in the best chain
- NonFinalized
Blocks Listener - A listener for changes in the non-finalized state.
- NonFinalized
State - The state of the chains in memory, including queued blocks.
- Output
Location - A transparent output’s location in the chain, by block height and transaction index.
- Read
State Service - A read-only service for accessing Zebra’s cached blockchain state.
- Semantically
Verified Block - A block which has undergone semantic validation and has been prepared for contextual validation.
- Transaction
Index - A transaction’s index in its block.
- Transaction
Location - A transaction’s location in the chain, by block height and transaction index.
- Watch
Receiver - Efficient access to state data via a
tokiowatch::Receiverchannel, while avoiding deadlocks. - ZebraDb
- Wrapper struct to ensure high-level
zebra-statedatabase access goes through the correct API.
Enums§
- AnyTx
- Information about a transaction in any chain.
- Commit
Semantically Verified Error - An error describing why a
CommitSemanticallyVerifiedrequest failed. - Hash
OrHeight - Identify a block by hash or height.
- Known
Block - An enum of block stores in the state where a block hash could be found.
- Read
Request - A read-only query about the chain state, via the
ReadStateService. - Read
Response - A response to a read-only
ReadStateService’sReadRequest. - Request
- A query about or modification to the chain state, via the
StateService. - Response
- A response to a
StateServiceRequest. - TipAction
- Actions that we can take in response to a
ChainTipChange. - Validate
Context Error - An error describing why a block failed contextual validation.
Traits§
- Duplicate
Nullifier Error - Trait for creating the corresponding duplicate nullifier error from a nullifier.
- From
Disk - Helper type for reading types from disk as raw bytes.
- Into
Disk - Helper type for writing types to disk as raw bytes. Also used to convert key types to raw bytes for disk lookups.
- Mapped
Request - Helper trait for convenient access to expected response and error types.
- Read
State - Trait alias for services handling read-only state requests.
- State
- Trait alias for services handling state-modifying requests.
- Write
Disk - Helper trait for inserting serialized typed (Key, Value) pairs into rocksdb.
Functions§
- init
- Initialize a state service from the provided
Config. Returns a boxed state service, a read-only state service, and receivers for state chain tip updates. - init_
read_ only - Initialize a read state service from the provided
Config. Returns a read-only state service, - spawn_
init_ read_ only - Calls
init_read_onlywith the providedConfigandNetworkfrom a blocking task. Returns atokio::task::JoinHandlewith a read state service and chain tip sender.
Type Aliases§
- BoxError
- A boxed
std::error::Error.