reth_provider/providers/
mod.rs

1//! Contains the main provider types and traits for interacting with the blockchain's storage.
2
3use reth_chainspec::EthereumHardforks;
4use reth_db_api::table::Value;
5use reth_node_types::{FullNodePrimitives, NodeTypes, NodeTypesWithDB, NodeTypesWithEngine};
6
7mod database;
8pub use database::*;
9
10mod static_file;
11pub use static_file::{
12    StaticFileAccess, StaticFileJarProvider, StaticFileProvider, StaticFileProviderRW,
13    StaticFileProviderRWRefMut, StaticFileWriter,
14};
15
16mod state;
17pub use state::{
18    historical::{HistoricalStateProvider, HistoricalStateProviderRef},
19    latest::{LatestStateProvider, LatestStateProviderRef},
20};
21
22mod bundle_state_provider;
23pub use bundle_state_provider::BundleStateProvider;
24
25mod consistent_view;
26pub use consistent_view::{ConsistentDbView, ConsistentViewError};
27
28mod blockchain_provider;
29pub use blockchain_provider::BlockchainProvider;
30
31mod consistent;
32pub use consistent::ConsistentProvider;
33
34/// Helper trait to bound [`NodeTypes`] so that combined with database they satisfy
35/// [`ProviderNodeTypes`].
36pub trait NodeTypesForProvider
37where
38    Self: NodeTypes<
39        ChainSpec: EthereumHardforks,
40        Storage: ChainStorage<Self::Primitives>,
41        Primitives: FullNodePrimitives<SignedTx: Value, Receipt: Value, BlockHeader: Value>,
42    >,
43{
44}
45
46impl<T> NodeTypesForProvider for T where
47    T: NodeTypes<
48        ChainSpec: EthereumHardforks,
49        Storage: ChainStorage<T::Primitives>,
50        Primitives: FullNodePrimitives<SignedTx: Value, Receipt: Value, BlockHeader: Value>,
51    >
52{
53}
54
55/// Helper trait keeping common requirements of providers for [`NodeTypesWithDB`].
56pub trait ProviderNodeTypes
57where
58    Self: NodeTypesForProvider + NodeTypesWithDB,
59{
60}
61impl<T> ProviderNodeTypes for T where T: NodeTypesForProvider + NodeTypesWithDB {}
62
63/// Helper trait expressing requirements for node types to be used in engine.
64pub trait EngineNodeTypes: ProviderNodeTypes + NodeTypesWithEngine {}
65
66impl<T> EngineNodeTypes for T where T: ProviderNodeTypes + NodeTypesWithEngine {}