pub type DatabaseProviderRO<DB, N> = DatabaseProvider<<DB as Database>::TX, N>;
Expand description
A DatabaseProvider
that holds a read-only database transaction.
Aliased Type§
struct DatabaseProviderRO<DB, N> { /* private fields */ }
Layout§
Note: Encountered an error during type layout; the type failed to be normalized.
Implementations
Source§impl<TX, N: NodeTypes> DatabaseProvider<TX, N>
impl<TX, N: NodeTypes> DatabaseProvider<TX, N>
Sourcepub const fn prune_modes_ref(&self) -> &PruneModes
pub const fn prune_modes_ref(&self) -> &PruneModes
Returns reference to prune modes.
Source§impl<TX: DbTx + 'static, N: NodeTypes> DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> DatabaseProvider<TX, N>
Sourcepub fn latest<'a>(&'a self) -> Box<dyn StateProvider + 'a>
pub fn latest<'a>(&'a self) -> Box<dyn StateProvider + 'a>
State provider for latest state
Sourcepub fn history_by_block_hash<'a>(
&'a self,
block_hash: BlockHash,
) -> ProviderResult<Box<dyn StateProvider + 'a>>
pub fn history_by_block_hash<'a>( &'a self, block_hash: BlockHash, ) -> ProviderResult<Box<dyn StateProvider + 'a>>
Storage provider for state at that given block hash
Sourcepub fn set_prune_modes(&mut self, prune_modes: PruneModes)
Available on crate feature test-utils
only.
pub fn set_prune_modes(&mut self, prune_modes: PruneModes)
test-utils
only.Sets the prune modes for provider.
Source§impl<TX: DbTxMut, N: NodeTypes> DatabaseProvider<TX, N>
impl<TX: DbTxMut, N: NodeTypes> DatabaseProvider<TX, N>
Sourcepub const fn new_rw(
tx: TX,
chain_spec: Arc<N::ChainSpec>,
static_file_provider: StaticFileProvider<N::Primitives>,
prune_modes: PruneModes,
storage: Arc<N::Storage>,
) -> Self
pub const fn new_rw( tx: TX, chain_spec: Arc<N::ChainSpec>, static_file_provider: StaticFileProvider<N::Primitives>, prune_modes: PruneModes, storage: Arc<N::Storage>, ) -> Self
Creates a provider with an inner read-write transaction.
Source§impl<TX: DbTx + DbTxMut + 'static, N: NodeTypesForProvider> DatabaseProvider<TX, N>
impl<TX: DbTx + DbTxMut + 'static, N: NodeTypesForProvider> DatabaseProvider<TX, N>
Sourcepub fn unwind_trie_state_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<()>
pub fn unwind_trie_state_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<()>
Unwinds trie state for the given range.
This includes calculating the resulted state root and comparing it with the parent block state root.
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> DatabaseProvider<TX, N>
Sourcepub const fn new(
tx: TX,
chain_spec: Arc<N::ChainSpec>,
static_file_provider: StaticFileProvider<N::Primitives>,
prune_modes: PruneModes,
storage: Arc<N::Storage>,
) -> Self
pub const fn new( tx: TX, chain_spec: Arc<N::ChainSpec>, static_file_provider: StaticFileProvider<N::Primitives>, prune_modes: PruneModes, storage: Arc<N::Storage>, ) -> Self
Creates a provider with an inner read-only transaction.
Sourcepub fn chain_spec(&self) -> &N::ChainSpec
pub fn chain_spec(&self) -> &N::ChainSpec
Returns a reference to the chain specification.
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> DatabaseProvider<TX, N>
Sourcepub fn commit(self) -> ProviderResult<bool>
pub fn commit(self) -> ProviderResult<bool>
Commit database transaction.
Source§impl<Tx: DbTx + DbTxMut + 'static, N: NodeTypesForProvider<Primitives: NodePrimitives<BlockHeader = Header>>> DatabaseProvider<Tx, N>
impl<Tx: DbTx + DbTxMut + 'static, N: NodeTypesForProvider<Primitives: NodePrimitives<BlockHeader = Header>>> DatabaseProvider<Tx, N>
Sourcepub fn insert_historical_block(
&self,
block: RecoveredBlock<<Self as BlockWriter>::Block>,
) -> ProviderResult<StoredBlockBodyIndices>
pub fn insert_historical_block( &self, block: RecoveredBlock<<Self as BlockWriter>::Block>, ) -> ProviderResult<StoredBlockBodyIndices>
Inserts an historical block. Used for setting up test environments
Trait Implementations
Source§impl<TX: DbTx, N: NodeTypes> AccountExtReader for DatabaseProvider<TX, N>
impl<TX: DbTx, N: NodeTypes> AccountExtReader for DatabaseProvider<TX, N>
Source§fn changed_accounts_with_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<BTreeSet<Address>>
fn changed_accounts_with_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<BTreeSet<Address>>
Source§fn basic_accounts(
&self,
iter: impl IntoIterator<Item = Address>,
) -> ProviderResult<Vec<(Address, Option<Account>)>>
fn basic_accounts( &self, iter: impl IntoIterator<Item = Address>, ) -> ProviderResult<Vec<(Address, Option<Account>)>>
AccountReader::basic_account
repeatedly. Read moreSource§fn changed_accounts_and_blocks_with_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<BTreeMap<Address, Vec<u64>>>
fn changed_accounts_and_blocks_with_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<Address, Vec<u64>>>
Source§impl<TX: DbTx, N: NodeTypes> AccountReader for DatabaseProvider<TX, N>
impl<TX: DbTx, N: NodeTypes> AccountReader for DatabaseProvider<TX, N>
Source§fn basic_account(&self, address: &Address) -> ProviderResult<Option<Account>>
fn basic_account(&self, address: &Address) -> ProviderResult<Option<Account>>
Source§impl<TX, N: NodeTypes> AsRef<DatabaseProvider<TX, N>> for DatabaseProvider<TX, N>
impl<TX, N: NodeTypes> AsRef<DatabaseProvider<TX, N>> for DatabaseProvider<TX, N>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> BlockBodyIndicesProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> BlockBodyIndicesProvider for DatabaseProvider<TX, N>
Source§fn block_body_indices(
&self,
num: u64,
) -> ProviderResult<Option<StoredBlockBodyIndices>>
fn block_body_indices( &self, num: u64, ) -> ProviderResult<Option<StoredBlockBodyIndices>>
Source§fn block_body_indices_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<StoredBlockBodyIndices>>
fn block_body_indices_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<StoredBlockBodyIndices>>
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider + 'static> BlockExecutionWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider + 'static> BlockExecutionWriter for DatabaseProvider<TX, N>
Source§fn take_block_and_execution_above(
&self,
block: BlockNumber,
remove_from: StorageLocation,
) -> ProviderResult<Chain<Self::Primitives>>
fn take_block_and_execution_above( &self, block: BlockNumber, remove_from: StorageLocation, ) -> ProviderResult<Chain<Self::Primitives>>
Source§fn remove_block_and_execution_above(
&self,
block: BlockNumber,
remove_from: StorageLocation,
) -> ProviderResult<()>
fn remove_block_and_execution_above( &self, block: BlockNumber, remove_from: StorageLocation, ) -> ProviderResult<()>
Source§impl<TX: DbTx + 'static, N: NodeTypes> BlockHashReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> BlockHashReader for DatabaseProvider<TX, N>
Source§fn block_hash(&self, number: u64) -> ProviderResult<Option<B256>>
fn block_hash(&self, number: u64) -> ProviderResult<Option<B256>>
None
if no block with this number
exists.Source§fn canonical_hashes_range(
&self,
start: BlockNumber,
end: BlockNumber,
) -> ProviderResult<Vec<B256>>
fn canonical_hashes_range( &self, start: BlockNumber, end: BlockNumber, ) -> ProviderResult<Vec<B256>>
§fn convert_block_hash(
&self,
hash_or_number: HashOrNumber,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn convert_block_hash( &self, hash_or_number: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>
None
if no block with this number
exists.Source§impl<TX: DbTx + 'static, N: NodeTypes> BlockNumReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> BlockNumReader for DatabaseProvider<TX, N>
Source§fn chain_info(&self) -> ProviderResult<ChainInfo>
fn chain_info(&self) -> ProviderResult<ChainInfo>
Source§fn best_block_number(&self) -> ProviderResult<BlockNumber>
fn best_block_number(&self) -> ProviderResult<BlockNumber>
Source§fn last_block_number(&self) -> ProviderResult<BlockNumber>
fn last_block_number(&self) -> ProviderResult<BlockNumber>
Source§fn block_number(&self, hash: B256) -> ProviderResult<Option<BlockNumber>>
fn block_number(&self, hash: B256) -> ProviderResult<Option<BlockNumber>>
BlockNumber
for the given hash. Returns None
if no block with this hash exists.§fn convert_hash_or_number(
&self,
id: HashOrNumber,
) -> Result<Option<u64>, ProviderError>
fn convert_hash_or_number( &self, id: HashOrNumber, ) -> Result<Option<u64>, ProviderError>
BlockHashOrNumber
. Returns None
if no block with
this hash exists. If the BlockHashOrNumber
is a Number
, it is returned as is.§fn convert_number(
&self,
id: HashOrNumber,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn convert_number( &self, id: HashOrNumber, ) -> Result<Option<FixedBytes<32>>, ProviderError>
BlockHashOrNumber
. Returns None
if no block with this
number exists. If the BlockHashOrNumber
is a Hash
, it is returned as is.Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> BlockReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> BlockReader for DatabaseProvider<TX, N>
Source§fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Self::Block>>
fn block(&self, id: BlockHashOrNumber) -> ProviderResult<Option<Self::Block>>
Returns the block with matching number from database.
If the header for this block is not found, this returns None
.
If the header is found, but the transactions either do not exist, or are not indexed, this
will return None.
Source§fn recovered_block(
&self,
id: BlockHashOrNumber,
transaction_kind: TransactionVariant,
) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn recovered_block( &self, id: BlockHashOrNumber, transaction_kind: TransactionVariant, ) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Returns the block with senders with matching number or hash from database.
NOTE: The transactions have invalid hashes, since they would need to be calculated on the spot, and we want fast querying.
If the header for this block is not found, this returns None
.
If the header is found, but the transactions either do not exist, or are not indexed, this
will return None.
Source§type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
Source§fn find_block_by_hash(
&self,
hash: B256,
source: BlockSource,
) -> ProviderResult<Option<Self::Block>>
fn find_block_by_hash( &self, hash: B256, source: BlockSource, ) -> ProviderResult<Option<Self::Block>>
Source§fn pending_block(&self) -> ProviderResult<Option<SealedBlock<Self::Block>>>
fn pending_block(&self) -> ProviderResult<Option<SealedBlock<Self::Block>>>
Source§fn pending_block_with_senders(
&self,
) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn pending_block_with_senders( &self, ) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Source§fn pending_block_and_receipts(
&self,
) -> ProviderResult<Option<(SealedBlock<Self::Block>, Vec<Self::Receipt>)>>
fn pending_block_and_receipts( &self, ) -> ProviderResult<Option<(SealedBlock<Self::Block>, Vec<Self::Receipt>)>>
Source§fn sealed_block_with_senders(
&self,
id: BlockHashOrNumber,
transaction_kind: TransactionVariant,
) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
fn sealed_block_with_senders( &self, id: BlockHashOrNumber, transaction_kind: TransactionVariant, ) -> ProviderResult<Option<RecoveredBlock<Self::Block>>>
Source§fn block_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<Self::Block>>
fn block_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<Self::Block>>
Source§fn block_with_senders_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
fn block_with_senders_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
Source§fn recovered_block_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
fn recovered_block_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<Vec<RecoveredBlock<Self::Block>>>
§fn block_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<Self::Block>, ProviderError>
fn block_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<Self::Block>, ProviderError>
§fn block_by_number(
&self,
num: u64,
) -> Result<Option<Self::Block>, ProviderError>
fn block_by_number( &self, num: u64, ) -> Result<Option<Self::Block>, ProviderError>
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider + 'static> BlockWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider + 'static> BlockWriter for DatabaseProvider<TX, N>
Source§fn insert_block(
&self,
block: RecoveredBlock<Self::Block>,
write_to: StorageLocation,
) -> ProviderResult<StoredBlockBodyIndices>
fn insert_block( &self, block: RecoveredBlock<Self::Block>, write_to: StorageLocation, ) -> ProviderResult<StoredBlockBodyIndices>
Inserts the block into the database, always modifying the following tables:
If there are transactions in the block, the following tables will be modified:
If ommers are not empty, this will modify BlockOmmers
.
If withdrawals are not empty, this will modify
BlockWithdrawals
.
If the provider has not configured full sender pruning, this will modify
TransactionSenders
.
If the provider has not configured full transaction lookup pruning, this will modify
TransactionHashNumbers
.
Source§fn append_blocks_with_state(
&self,
blocks: Vec<RecoveredBlock<Self::Block>>,
execution_outcome: &ExecutionOutcome<Self::Receipt>,
hashed_state: HashedPostStateSorted,
trie_updates: TrieUpdates,
) -> ProviderResult<()>
fn append_blocks_with_state( &self, blocks: Vec<RecoveredBlock<Self::Block>>, execution_outcome: &ExecutionOutcome<Self::Receipt>, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> ProviderResult<()>
TODO(joshie): this fn should be moved to UnifiedStorageWriter
eventually
Source§type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
Source§type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
ExecutionOutcome
.Source§fn append_block_bodies(
&self,
bodies: Vec<(BlockNumber, Option<BodyTy<N>>)>,
write_to: StorageLocation,
) -> ProviderResult<()>
fn append_block_bodies( &self, bodies: Vec<(BlockNumber, Option<BodyTy<N>>)>, write_to: StorageLocation, ) -> ProviderResult<()>
Bodies
stage and does not write to TransactionHashNumbers
and TransactionSenders
tables which are populated on later stages. Read moreSource§fn remove_blocks_above(
&self,
block: BlockNumber,
remove_from: StorageLocation,
) -> ProviderResult<()>
fn remove_blocks_above( &self, block: BlockNumber, remove_from: StorageLocation, ) -> ProviderResult<()>
Source§fn remove_bodies_above(
&self,
block: BlockNumber,
remove_from: StorageLocation,
) -> ProviderResult<()>
fn remove_bodies_above( &self, block: BlockNumber, remove_from: StorageLocation, ) -> ProviderResult<()>
Source§impl<TX: Send + Sync, N: NodeTypes<ChainSpec: EthChainSpec + 'static>> ChainSpecProvider for DatabaseProvider<TX, N>
impl<TX: Send + Sync, N: NodeTypes<ChainSpec: EthChainSpec + 'static>> ChainSpecProvider for DatabaseProvider<TX, N>
Source§impl<TX: DbTx + 'static, N: NodeTypes> ChainStateBlockReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> ChainStateBlockReader for DatabaseProvider<TX, N>
Source§fn last_finalized_block_number(&self) -> ProviderResult<Option<BlockNumber>>
fn last_finalized_block_number(&self) -> ProviderResult<Option<BlockNumber>>
Source§fn last_safe_block_number(&self) -> ProviderResult<Option<BlockNumber>>
fn last_safe_block_number(&self) -> ProviderResult<Option<BlockNumber>>
Source§impl<TX: DbTxMut, N: NodeTypes> ChainStateBlockWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut, N: NodeTypes> ChainStateBlockWriter for DatabaseProvider<TX, N>
Source§fn save_finalized_block_number(
&self,
block_number: BlockNumber,
) -> ProviderResult<()>
fn save_finalized_block_number( &self, block_number: BlockNumber, ) -> ProviderResult<()>
Source§fn save_safe_block_number(
&self,
block_number: BlockNumber,
) -> ProviderResult<()>
fn save_safe_block_number( &self, block_number: BlockNumber, ) -> ProviderResult<()>
Source§impl<TX: DbTx, N: NodeTypes> ChangeSetReader for DatabaseProvider<TX, N>
impl<TX: DbTx, N: NodeTypes> ChangeSetReader for DatabaseProvider<TX, N>
Source§fn account_block_changeset(
&self,
block_number: BlockNumber,
) -> ProviderResult<Vec<AccountBeforeTx>>
fn account_block_changeset( &self, block_number: BlockNumber, ) -> ProviderResult<Vec<AccountBeforeTx>>
Source§impl<TX: DbTx + 'static, N: NodeTypes + 'static> DBProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes + 'static> DBProvider for DatabaseProvider<TX, N>
Source§fn tx_mut(&mut self) -> &mut Self::Tx
fn tx_mut(&mut self) -> &mut Self::Tx
Source§fn prune_modes_ref(&self) -> &PruneModes
fn prune_modes_ref(&self) -> &PruneModes
§fn disable_long_read_transaction_safety(self) -> Self
fn disable_long_read_transaction_safety(self) -> Self
§fn commit(self) -> Result<bool, ProviderError>
fn commit(self) -> Result<bool, ProviderError>
§fn table<T>(
&self,
) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>
fn table<T>( &self, ) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>
§fn get<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>where
T: Table,
fn get<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>where
T: Table,
§fn cursor_read_collect<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
fn cursor_read_collect<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
§fn cursor_collect<T>(
&self,
cursor: &mut impl DbCursorRO<T>,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
fn cursor_collect<T>(
&self,
cursor: &mut impl DbCursorRO<T>,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
§fn cursor_collect_with_capacity<T>(
&self,
cursor: &mut impl DbCursorRO<T>,
range: impl RangeBounds<<T as Table>::Key>,
capacity: usize,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
fn cursor_collect_with_capacity<T>(
&self,
cursor: &mut impl DbCursorRO<T>,
range: impl RangeBounds<<T as Table>::Key>,
capacity: usize,
) -> Result<Vec<<T as Table>::Value>, ProviderError>where
T: Table<Key = u64>,
§fn remove<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<usize, DatabaseError>where
T: Table,
Self::Tx: DbTxMut,
fn remove<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<usize, DatabaseError>where
T: Table,
Self::Tx: DbTxMut,
§fn take<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>where
T: Table,
Self::Tx: DbTxMut,
fn take<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<(<T as Table>::Key, <T as Table>::Value)>, DatabaseError>where
T: Table,
Self::Tx: DbTxMut,
Source§impl<DB: Database, N: NodeTypes> From<DatabaseProviderRW<DB, N>> for DatabaseProvider<<DB as Database>::TXMut, N>
impl<DB: Database, N: NodeTypes> From<DatabaseProviderRW<DB, N>> for DatabaseProvider<<DB as Database>::TXMut, N>
Source§fn from(provider: DatabaseProviderRW<DB, N>) -> Self
fn from(provider: DatabaseProviderRW<DB, N>) -> Self
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> HashingWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> HashingWriter for DatabaseProvider<TX, N>
Source§fn unwind_account_hashing<'a>(
&self,
changesets: impl Iterator<Item = &'a (BlockNumber, AccountBeforeTx)>,
) -> ProviderResult<BTreeMap<B256, Option<Account>>>
fn unwind_account_hashing<'a>( &self, changesets: impl Iterator<Item = &'a (BlockNumber, AccountBeforeTx)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>
Source§fn unwind_account_hashing_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<BTreeMap<B256, Option<Account>>>
fn unwind_account_hashing_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>
Source§fn insert_account_for_hashing(
&self,
changesets: impl IntoIterator<Item = (Address, Option<Account>)>,
) -> ProviderResult<BTreeMap<B256, Option<Account>>>
fn insert_account_for_hashing( &self, changesets: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>
AccountsHistory
][reth_db_api::tables::AccountsHistory] table. Read moreSource§fn unwind_storage_hashing(
&self,
changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>,
) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
fn unwind_storage_hashing( &self, changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
Source§fn unwind_storage_hashing_range(
&self,
range: impl RangeBounds<BlockNumberAddress>,
) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
fn unwind_storage_hashing_range( &self, range: impl RangeBounds<BlockNumberAddress>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
Source§fn insert_storage_for_hashing(
&self,
storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>,
) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>
Source§fn insert_hashes(
&self,
range: RangeInclusive<BlockNumber>,
end_block_hash: B256,
expected_state_root: B256,
) -> ProviderResult<()>
fn insert_hashes( &self, range: RangeInclusive<BlockNumber>, end_block_hash: B256, expected_state_root: B256, ) -> ProviderResult<()>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> HeaderProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> HeaderProvider for DatabaseProvider<TX, N>
Source§type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
Source§fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Self::Header>>
fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Self::Header>>
Source§fn header_by_number(
&self,
num: BlockNumber,
) -> ProviderResult<Option<Self::Header>>
fn header_by_number( &self, num: BlockNumber, ) -> ProviderResult<Option<Self::Header>>
Source§fn header_td(&self, block_hash: &BlockHash) -> ProviderResult<Option<U256>>
fn header_td(&self, block_hash: &BlockHash) -> ProviderResult<Option<U256>>
Source§fn header_td_by_number(
&self,
number: BlockNumber,
) -> ProviderResult<Option<U256>>
fn header_td_by_number( &self, number: BlockNumber, ) -> ProviderResult<Option<U256>>
Source§fn headers_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Self::Header>>
fn headers_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Self::Header>>
Source§fn sealed_header(
&self,
number: BlockNumber,
) -> ProviderResult<Option<SealedHeader<Self::Header>>>
fn sealed_header( &self, number: BlockNumber, ) -> ProviderResult<Option<SealedHeader<Self::Header>>>
Source§fn sealed_headers_while(
&self,
range: impl RangeBounds<BlockNumber>,
predicate: impl FnMut(&SealedHeader<Self::Header>) -> bool,
) -> ProviderResult<Vec<SealedHeader<Self::Header>>>
fn sealed_headers_while( &self, range: impl RangeBounds<BlockNumber>, predicate: impl FnMut(&SealedHeader<Self::Header>) -> bool, ) -> ProviderResult<Vec<SealedHeader<Self::Header>>>
predicate
returns true
or the range is exhausted.§fn is_known(&self, block_hash: &FixedBytes<32>) -> Result<bool, ProviderError>
fn is_known(&self, block_hash: &FixedBytes<32>) -> Result<bool, ProviderError>
§fn sealed_header_by_hash(
&self,
block_hash: FixedBytes<32>,
) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
fn sealed_header_by_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Option<SealedHeader<Self::Header>>, ProviderError>
§fn header_by_hash_or_number(
&self,
hash_or_num: HashOrNumber,
) -> Result<Option<Self::Header>, ProviderError>
fn header_by_hash_or_number( &self, hash_or_num: HashOrNumber, ) -> Result<Option<Self::Header>, ProviderError>
§fn sealed_headers_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<SealedHeader<Self::Header>>, ProviderError>
fn sealed_headers_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<SealedHeader<Self::Header>>, ProviderError>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> HeaderSyncGapProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> HeaderSyncGapProvider for DatabaseProvider<TX, N>
Source§fn sync_gap(
&self,
tip: Receiver<B256>,
highest_uninterrupted_block: BlockNumber,
) -> ProviderResult<HeaderSyncGap<Self::Header>>
fn sync_gap( &self, tip: Receiver<B256>, highest_uninterrupted_block: BlockNumber, ) -> ProviderResult<HeaderSyncGap<Self::Header>>
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> HistoryWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> HistoryWriter for DatabaseProvider<TX, N>
Source§fn unwind_account_history_indices<'a>(
&self,
changesets: impl Iterator<Item = &'a (BlockNumber, AccountBeforeTx)>,
) -> ProviderResult<usize>
fn unwind_account_history_indices<'a>( &self, changesets: impl Iterator<Item = &'a (BlockNumber, AccountBeforeTx)>, ) -> ProviderResult<usize>
Source§fn unwind_account_history_indices_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<usize>
fn unwind_account_history_indices_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<usize>
Source§fn insert_account_history_index(
&self,
account_transitions: impl IntoIterator<Item = (Address, impl IntoIterator<Item = u64>)>,
) -> ProviderResult<()>
fn insert_account_history_index( &self, account_transitions: impl IntoIterator<Item = (Address, impl IntoIterator<Item = u64>)>, ) -> ProviderResult<()>
Source§fn unwind_storage_history_indices(
&self,
changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>,
) -> ProviderResult<usize>
fn unwind_storage_history_indices( &self, changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>, ) -> ProviderResult<usize>
Source§fn unwind_storage_history_indices_range(
&self,
range: impl RangeBounds<BlockNumberAddress>,
) -> ProviderResult<usize>
fn unwind_storage_history_indices_range( &self, range: impl RangeBounds<BlockNumberAddress>, ) -> ProviderResult<usize>
Source§fn insert_storage_history_index(
&self,
storage_transitions: impl IntoIterator<Item = ((Address, B256), impl IntoIterator<Item = u64>)>,
) -> ProviderResult<()>
fn insert_storage_history_index( &self, storage_transitions: impl IntoIterator<Item = ((Address, B256), impl IntoIterator<Item = u64>)>, ) -> ProviderResult<()>
Source§fn update_history_indices(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<()>
fn update_history_indices( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<()>
Source§impl<TX, N: NodeTypes> NodePrimitivesProvider for DatabaseProvider<TX, N>
impl<TX, N: NodeTypes> NodePrimitivesProvider for DatabaseProvider<TX, N>
Source§type Primitives = <N as NodeTypes>::Primitives
type Primitives = <N as NodeTypes>::Primitives
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> OmmersProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> OmmersProvider for DatabaseProvider<TX, N>
Source§impl<TX: DbTx + 'static, N: NodeTypes> PruneCheckpointReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> PruneCheckpointReader for DatabaseProvider<TX, N>
Source§fn get_prune_checkpoint(
&self,
segment: PruneSegment,
) -> ProviderResult<Option<PruneCheckpoint>>
fn get_prune_checkpoint( &self, segment: PruneSegment, ) -> ProviderResult<Option<PruneCheckpoint>>
Source§fn get_prune_checkpoints(
&self,
) -> ProviderResult<Vec<(PruneSegment, PruneCheckpoint)>>
fn get_prune_checkpoints( &self, ) -> ProviderResult<Vec<(PruneSegment, PruneCheckpoint)>>
Source§impl<TX: DbTxMut, N: NodeTypes> PruneCheckpointWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut, N: NodeTypes> PruneCheckpointWriter for DatabaseProvider<TX, N>
Source§fn save_prune_checkpoint(
&self,
segment: PruneSegment,
checkpoint: PruneCheckpoint,
) -> ProviderResult<()>
fn save_prune_checkpoint( &self, segment: PruneSegment, checkpoint: PruneCheckpoint, ) -> ProviderResult<()>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> ReceiptProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> ReceiptProvider for DatabaseProvider<TX, N>
Source§fn receipt(&self, id: TxNumber) -> ProviderResult<Option<Self::Receipt>>
fn receipt(&self, id: TxNumber) -> ProviderResult<Option<Self::Receipt>>
Source§fn receipt_by_hash(&self, hash: TxHash) -> ProviderResult<Option<Self::Receipt>>
fn receipt_by_hash(&self, hash: TxHash) -> ProviderResult<Option<Self::Receipt>>
Source§fn receipts_by_block(
&self,
block: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<Self::Receipt>>>
fn receipts_by_block( &self, block: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Receipt>>>
Source§fn receipts_by_tx_range(
&self,
range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Self::Receipt>>
fn receipts_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Receipt>>
Source§impl<TX: DbTx, N: NodeTypes> StageCheckpointReader for DatabaseProvider<TX, N>
impl<TX: DbTx, N: NodeTypes> StageCheckpointReader for DatabaseProvider<TX, N>
Source§fn get_stage_checkpoint_progress(
&self,
id: StageId,
) -> ProviderResult<Option<Vec<u8>>>
fn get_stage_checkpoint_progress( &self, id: StageId, ) -> ProviderResult<Option<Vec<u8>>>
Get stage checkpoint progress.
Source§fn get_stage_checkpoint(
&self,
id: StageId,
) -> ProviderResult<Option<StageCheckpoint>>
fn get_stage_checkpoint( &self, id: StageId, ) -> ProviderResult<Option<StageCheckpoint>>
Source§fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>
fn get_all_checkpoints(&self) -> ProviderResult<Vec<(String, StageCheckpoint)>>
Source§impl<TX: DbTxMut, N: NodeTypes> StageCheckpointWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut, N: NodeTypes> StageCheckpointWriter for DatabaseProvider<TX, N>
Source§fn save_stage_checkpoint(
&self,
id: StageId,
checkpoint: StageCheckpoint,
) -> ProviderResult<()>
fn save_stage_checkpoint( &self, id: StageId, checkpoint: StageCheckpoint, ) -> ProviderResult<()>
Save stage checkpoint.
Source§fn save_stage_checkpoint_progress(
&self,
id: StageId,
checkpoint: Vec<u8>,
) -> ProviderResult<()>
fn save_stage_checkpoint_progress( &self, id: StageId, checkpoint: Vec<u8>, ) -> ProviderResult<()>
Save stage checkpoint progress.
Source§fn update_pipeline_stages(
&self,
block_number: BlockNumber,
drop_stage_checkpoint: bool,
) -> ProviderResult<()>
fn update_pipeline_stages( &self, block_number: BlockNumber, drop_stage_checkpoint: bool, ) -> ProviderResult<()>
Source§impl<TX: DbTx + 'static, N: NodeTypes> StateCommitmentProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> StateCommitmentProvider for DatabaseProvider<TX, N>
Source§type StateCommitment = <N as NodeTypes>::StateCommitment
type StateCommitment = <N as NodeTypes>::StateCommitment
reth_trie_db::StateCommitment
] type that can be used to perform state commitment
operations.Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider> StateWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider> StateWriter for DatabaseProvider<TX, N>
Source§fn remove_state_above(
&self,
block: BlockNumber,
remove_receipts_from: StorageLocation,
) -> ProviderResult<()>
fn remove_state_above( &self, block: BlockNumber, remove_receipts_from: StorageLocation, ) -> ProviderResult<()>
Remove the last N blocks of state.
The latest state will be unwound
- Iterate over the [
BlockBodyIndices
][tables::BlockBodyIndices] table to get all the transaction ids. - Iterate over the [
StorageChangeSets
][tables::StorageChangeSets] table and the [AccountChangeSets
][tables::AccountChangeSets] tables in reverse order to reconstruct the changesets.- In order to have both the old and new values in the changesets, we also access the plain state tables.
- While iterating over the changeset tables, if we encounter a new account or storage slot,
we:
- Take the old value from the changeset
- Take the new value from the plain state
- Save the old value to the local state
- While iterating over the changeset tables, if we encounter an account/storage slot we
have seen before we:
- Take the old value from the changeset
- Take the new value from the local state
- Set the local state to the value in the changeset
Source§fn take_state_above(
&self,
block: BlockNumber,
remove_receipts_from: StorageLocation,
) -> ProviderResult<ExecutionOutcome<Self::Receipt>>
fn take_state_above( &self, block: BlockNumber, remove_receipts_from: StorageLocation, ) -> ProviderResult<ExecutionOutcome<Self::Receipt>>
Take the last N blocks of state, recreating the ExecutionOutcome
.
The latest state will be unwound and returned back with all the blocks
- Iterate over the [
BlockBodyIndices
][tables::BlockBodyIndices] table to get all the transaction ids. - Iterate over the [
StorageChangeSets
][tables::StorageChangeSets] table and the [AccountChangeSets
][tables::AccountChangeSets] tables in reverse order to reconstruct the changesets.- In order to have both the old and new values in the changesets, we also access the plain state tables.
- While iterating over the changeset tables, if we encounter a new account or storage slot,
we:
- Take the old value from the changeset
- Take the new value from the plain state
- Save the old value to the local state
- While iterating over the changeset tables, if we encounter an account/storage slot we
have seen before we:
- Take the old value from the changeset
- Take the new value from the local state
- Set the local state to the value in the changeset
Source§type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
ExecutionOutcome
.Source§fn write_state(
&self,
execution_outcome: &ExecutionOutcome<Self::Receipt>,
is_value_known: OriginalValuesKnown,
write_receipts_to: StorageLocation,
) -> ProviderResult<()>
fn write_state( &self, execution_outcome: &ExecutionOutcome<Self::Receipt>, is_value_known: OriginalValuesKnown, write_receipts_to: StorageLocation, ) -> ProviderResult<()>
static_file_producer
is
Some
. It should be None
if there is any kind of pruning/filtering over the receipts.Source§fn write_state_reverts(
&self,
reverts: PlainStateReverts,
first_block: BlockNumber,
) -> ProviderResult<()>
fn write_state_reverts( &self, reverts: PlainStateReverts, first_block: BlockNumber, ) -> ProviderResult<()>
Source§fn write_state_changes(&self, changes: StateChangeset) -> ProviderResult<()>
fn write_state_changes(&self, changes: StateChangeset) -> ProviderResult<()>
Source§fn write_hashed_state(
&self,
hashed_state: &HashedPostStateSorted,
) -> ProviderResult<()>
fn write_hashed_state( &self, hashed_state: &HashedPostStateSorted, ) -> ProviderResult<()>
Source§impl<TX, N: NodeTypes> StaticFileProviderFactory for DatabaseProvider<TX, N>
impl<TX, N: NodeTypes> StaticFileProviderFactory for DatabaseProvider<TX, N>
Source§fn static_file_provider(&self) -> StaticFileProvider<Self::Primitives>
fn static_file_provider(&self) -> StaticFileProvider<Self::Primitives>
Returns a static file provider
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> StatsReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> StatsReader for DatabaseProvider<TX, N>
Source§fn count_entries<T: Table>(&self) -> ProviderResult<usize>
fn count_entries<T: Table>(&self) -> ProviderResult<usize>
Source§impl<TX: DbTx, N: NodeTypes> StorageChangeSetReader for DatabaseProvider<TX, N>
impl<TX: DbTx, N: NodeTypes> StorageChangeSetReader for DatabaseProvider<TX, N>
Source§fn storage_changeset(
&self,
block_number: BlockNumber,
) -> ProviderResult<Vec<(BlockNumberAddress, StorageEntry)>>
fn storage_changeset( &self, block_number: BlockNumber, ) -> ProviderResult<Vec<(BlockNumberAddress, StorageEntry)>>
Source§impl<TX: DbTx + 'static, N: NodeTypes> StorageReader for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> StorageReader for DatabaseProvider<TX, N>
Source§fn plain_state_storages(
&self,
addresses_with_keys: impl IntoIterator<Item = (Address, impl IntoIterator<Item = B256>)>,
) -> ProviderResult<Vec<(Address, Vec<StorageEntry>)>>
fn plain_state_storages( &self, addresses_with_keys: impl IntoIterator<Item = (Address, impl IntoIterator<Item = B256>)>, ) -> ProviderResult<Vec<(Address, Vec<StorageEntry>)>>
Source§fn changed_storages_with_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<BTreeMap<Address, BTreeSet<B256>>>
fn changed_storages_with_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<Address, BTreeSet<B256>>>
Source§fn changed_storages_and_blocks_with_range(
&self,
range: RangeInclusive<BlockNumber>,
) -> ProviderResult<BTreeMap<(Address, B256), Vec<u64>>>
fn changed_storages_and_blocks_with_range( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<(Address, B256), Vec<u64>>>
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> StorageTrieWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> StorageTrieWriter for DatabaseProvider<TX, N>
Source§fn write_storage_trie_updates(
&self,
storage_tries: &B256Map<StorageTrieUpdates>,
) -> ProviderResult<usize>
fn write_storage_trie_updates( &self, storage_tries: &B256Map<StorageTrieUpdates>, ) -> ProviderResult<usize>
Writes storage trie updates from the given storage trie map. First sorts the storage trie updates by the hashed address, writing in sorted order.
Source§fn write_individual_storage_trie_updates(
&self,
hashed_address: B256,
updates: &StorageTrieUpdates,
) -> ProviderResult<usize>
fn write_individual_storage_trie_updates( &self, hashed_address: B256, updates: &StorageTrieUpdates, ) -> ProviderResult<usize>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> TransactionsProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> TransactionsProvider for DatabaseProvider<TX, N>
Source§type Transaction = <<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx
type Transaction = <<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx
Source§fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
fn transaction_id(&self, tx_hash: TxHash) -> ProviderResult<Option<TxNumber>>
Source§fn transaction_by_id(
&self,
id: TxNumber,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_id( &self, id: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_id_unhashed(
&self,
id: TxNumber,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_id_unhashed( &self, id: TxNumber, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_hash(
&self,
hash: TxHash,
) -> ProviderResult<Option<Self::Transaction>>
fn transaction_by_hash( &self, hash: TxHash, ) -> ProviderResult<Option<Self::Transaction>>
Source§fn transaction_by_hash_with_meta(
&self,
tx_hash: TxHash,
) -> ProviderResult<Option<(Self::Transaction, TransactionMeta)>>
fn transaction_by_hash_with_meta( &self, tx_hash: TxHash, ) -> ProviderResult<Option<(Self::Transaction, TransactionMeta)>>
Source§fn transaction_block(&self, id: TxNumber) -> ProviderResult<Option<BlockNumber>>
fn transaction_block(&self, id: TxNumber) -> ProviderResult<Option<BlockNumber>>
Source§fn transactions_by_block(
&self,
id: BlockHashOrNumber,
) -> ProviderResult<Option<Vec<Self::Transaction>>>
fn transactions_by_block( &self, id: BlockHashOrNumber, ) -> ProviderResult<Option<Vec<Self::Transaction>>>
Source§fn transactions_by_block_range(
&self,
range: impl RangeBounds<BlockNumber>,
) -> ProviderResult<Vec<Vec<Self::Transaction>>>
fn transactions_by_block_range( &self, range: impl RangeBounds<BlockNumber>, ) -> ProviderResult<Vec<Vec<Self::Transaction>>>
Source§fn transactions_by_tx_range(
&self,
range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Self::Transaction>>
fn transactions_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Self::Transaction>>
Source§fn senders_by_tx_range(
&self,
range: impl RangeBounds<TxNumber>,
) -> ProviderResult<Vec<Address>>
fn senders_by_tx_range( &self, range: impl RangeBounds<TxNumber>, ) -> ProviderResult<Vec<Address>>
Source§fn transaction_sender(&self, id: TxNumber) -> ProviderResult<Option<Address>>
fn transaction_sender(&self, id: TxNumber) -> ProviderResult<Option<Address>>
Source§impl<TX: DbTx + 'static, N: NodeTypesForProvider> TransactionsProviderExt for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypesForProvider> TransactionsProviderExt for DatabaseProvider<TX, N>
Source§fn transaction_hashes_by_range(
&self,
tx_range: Range<TxNumber>,
) -> ProviderResult<Vec<(TxHash, TxNumber)>>
fn transaction_hashes_by_range( &self, tx_range: Range<TxNumber>, ) -> ProviderResult<Vec<(TxHash, TxNumber)>>
Recovers transaction hashes by walking through Transactions
table and
calculating them in a parallel manner. Returned unsorted.
§fn transaction_range_by_block_range(
&self,
block_range: RangeInclusive<u64>,
) -> Result<RangeInclusive<u64>, ProviderError>
fn transaction_range_by_block_range( &self, block_range: RangeInclusive<u64>, ) -> Result<RangeInclusive<u64>, ProviderError>
Source§impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> TrieWriter for DatabaseProvider<TX, N>
impl<TX: DbTxMut + DbTx + 'static, N: NodeTypes> TrieWriter for DatabaseProvider<TX, N>
Source§fn write_trie_updates(
&self,
trie_updates: &TrieUpdates,
) -> ProviderResult<usize>
fn write_trie_updates( &self, trie_updates: &TrieUpdates, ) -> ProviderResult<usize>
Writes trie updates. Returns the number of entries modified.
Source§impl<TX: DbTx + 'static, N: NodeTypes> TryIntoHistoricalStateProvider for DatabaseProvider<TX, N>
impl<TX: DbTx + 'static, N: NodeTypes> TryIntoHistoricalStateProvider for DatabaseProvider<TX, N>
Source§fn try_into_history_at_block(
self,
block_number: BlockNumber,
) -> ProviderResult<StateProviderBox>
fn try_into_history_at_block( self, block_number: BlockNumber, ) -> ProviderResult<StateProviderBox>
StateProvider
indexed by the given historic block number.