#![doc(html_favicon_url = "https://zakura.com/assets/rustdoc/zakura-favicon-128.png")]
#![doc(html_logo_url = "https://zakura.com/assets/rustdoc/zakura-icon.png")]
#![doc(html_root_url = "https://docs.rs/zakura_state")]
#![allow(unknown_lints)]
#![allow(clippy::manual_is_multiple_of)]
#![allow(clippy::type_complexity)]
#[macro_use]
extern crate tracing;
pub mod config;
pub mod constants;
#[cfg(any(test, feature = "proptest-impl"))]
pub mod arbitrary;
mod error;
mod request;
mod response;
mod service;
#[cfg(test)]
mod tests;
pub use config::{
check_and_delete_old_databases, check_and_delete_old_state_databases,
database_format_version_on_disk, state_database_format_version_on_disk, Config, PruningConfig,
StorageMode,
};
pub use constants::{
state_database_format_version_in_code, DEFAULT_MAX_HISTORICAL_TREE_REPLAY_BLOCKS,
MAX_BLOCK_REORG_HEIGHT,
};
pub use error::{
BoxError, CloneError, CommitBlockError, CommitCheckpointVerifiedError, CommitHeaderRangeError,
CommitSemanticallyVerifiedError, DuplicateNullifierError, HistoricalSubtreeUnavailable,
HistoricalSubtreeUnavailableReason, HistoricalTreeUnavailable, MissingSproutTipTree,
StateInitError, StoreIncoherentError, ValidateContextError,
};
pub use request::{
AuthenticateHeaderRootsRequest, CheckpointVerifiedBlock,
CommitSemanticallyVerifiedBlockRequest, HashOrHeight, MappedRequest, ReadRequest, Request,
SemanticallyVerifiedBlock,
};
#[cfg(feature = "indexer")]
pub use request::Spend;
pub use response::{
AnyTx, GetBlockTemplateChainInfo, KnownBlock, MinedTx, NonFinalizedBlocksListener,
ReadResponse, Response,
};
pub use service::{
chain_tip::{ChainTipBlock, ChainTipChange, ChainTipSender, LatestChainTip, TipAction},
check,
finalized_state::FinalizedState,
init, init_read_only,
non_finalized_state::NonFinalizedState,
spawn_init_read_only,
watch_receiver::WatchReceiver,
OutputLocation, ReadState, State, TransactionIndex, TransactionLocation,
};
#[cfg(any(test, feature = "proptest-impl"))]
pub use service::finalized_state::{ReadDisk, TypedColumnFamily, WriteTypedBatch};
pub use service::finalized_state::{
derived_roots_in_display_order, inventory as vct_treestate_inventory,
inventory_with_scans as vct_treestate_inventory_with_scans, measure_derivations, replay_inputs,
verify_subtrees_against_stored, DerivationSample, ReplayInputs, SubtreeVerification,
VctTreestateInventory,
};
pub use service::finalized_state::{
preview_prune_finalized_state, prune_finalized_state, PruneFinalizedStateError,
PruneFinalizedStateOptions, PruneFinalizedStateSummary,
};
pub use service::finalized_state::{
preview_rollback_finalized_state, rollback_finalized_state, RollbackBackupSummary,
RollbackFinalizedStateError, RollbackFinalizedStateOptions, RollbackFinalizedStateSummary,
};
pub use service::finalized_state::{
produce_final_frontiers_bytes, produce_settled_final_frontiers_bytes,
validate_final_frontiers_bytes, AuthenticateHeaderRootsError, AuthenticateHeaderRootsOutcome,
AuthenticatedHeaderRoots, FinalFrontiersGenerationError, FinalFrontiersValidationError,
HeaderRootAuthState, HeaderRootAuthUpdate, HeaderWitnessState,
};
pub use service::read::{
derive_historical_frontiers, DerivedFrontiers, HistoricalTreeCache, MAX_MEMOIZED_FRONTIERS,
};
pub use service::{
finalized_state::{
DiskWriteBatch, FromDisk, HighestCompletedCheckpoint, HighestCompletedCheckpointError,
IntoDisk, WriteDisk, ZakuraDb,
},
ReadStateService, VctRootRepairState, VctRootRepairStatus,
};
#[cfg(any(test, feature = "proptest-impl"))]
pub use service::{
arbitrary::{populated_state, CHAIN_TIP_UPDATE_WAIT_LIMIT},
finalized_state::{RawBytes, KV, MAX_ON_DISK_HEIGHT},
init_test, init_test_services,
};
#[cfg(any(test, feature = "proptest-impl"))]
pub use config::hidden::{
write_database_format_version_to_disk, write_state_database_format_version_to_disk,
};
#[cfg(not(any(test, feature = "proptest-impl")))]
#[allow(unused_imports)]
pub(crate) use config::hidden::{
write_database_format_version_to_disk, write_state_database_format_version_to_disk,
};
pub use request::ContextuallyVerifiedBlock;