Type Alias DatabaseProviderRO
pub type DatabaseProviderRO<DB, N> = DatabaseProvider<<DB as Database>::TX, N>;
provider
only.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
§impl<TX, N> DatabaseProvider<TX, N>where
N: NodeTypes,
impl<TX, N> DatabaseProvider<TX, N>where
N: NodeTypes,
pub const fn prune_modes_ref(&self) -> &PruneModes
pub const fn prune_modes_ref(&self) -> &PruneModes
Returns reference to prune modes.
§impl<TX, N> DatabaseProvider<TX, N>
impl<TX, N> DatabaseProvider<TX, N>
pub fn latest<'a>(&'a self) -> Box<dyn StateProvider + 'a>
pub fn latest<'a>(&'a self) -> Box<dyn StateProvider + 'a>
State provider for latest state
pub fn history_by_block_hash<'a>(
&'a self,
block_hash: FixedBytes<32>,
) -> Result<Box<dyn StateProvider + 'a>, ProviderError>
pub fn history_by_block_hash<'a>( &'a self, block_hash: FixedBytes<32>, ) -> Result<Box<dyn StateProvider + 'a>, ProviderError>
Storage provider for state at that given block hash
pub 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.
§impl<TX, N> DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
pub const fn new(
tx: TX,
chain_spec: Arc<<N as NodeTypes>::ChainSpec>,
static_file_provider: StaticFileProvider<<N as NodeTypes>::Primitives>,
prune_modes: PruneModes,
storage: Arc<<N as NodeTypes>::Storage>,
) -> DatabaseProvider<TX, N>
pub const fn new( tx: TX, chain_spec: Arc<<N as NodeTypes>::ChainSpec>, static_file_provider: StaticFileProvider<<N as NodeTypes>::Primitives>, prune_modes: PruneModes, storage: Arc<<N as NodeTypes>::Storage>, ) -> DatabaseProvider<TX, N>
Creates a provider with an inner read-only transaction.
pub fn into_tx(self) -> TX
pub fn into_tx(self) -> TX
Consume DbTx
or DbTxMut
.
pub fn chain_spec(&self) -> &<N as NodeTypes>::ChainSpec
pub fn chain_spec(&self) -> &<N as NodeTypes>::ChainSpec
Returns a reference to the chain specification.
§impl<TX, N> DatabaseProvider<TX, N>
impl<TX, N> DatabaseProvider<TX, N>
pub fn unwind_trie_state_range(
&self,
range: RangeInclusive<u64>,
) -> Result<(), ProviderError>
pub fn unwind_trie_state_range( &self, range: RangeInclusive<u64>, ) -> Result<(), ProviderError>
Unwinds trie state for the given range.
This includes calculating the resulted state root and comparing it with the parent block state root.
§impl<TX, N> DatabaseProvider<TX, N>
impl<TX, N> DatabaseProvider<TX, N>
pub fn commit(self) -> Result<bool, ProviderError>
pub fn commit(self) -> Result<bool, ProviderError>
Commit database transaction.
§impl<TX, N> DatabaseProvider<TX, N>
impl<TX, N> DatabaseProvider<TX, N>
pub const fn new_rw(
tx: TX,
chain_spec: Arc<<N as NodeTypes>::ChainSpec>,
static_file_provider: StaticFileProvider<<N as NodeTypes>::Primitives>,
prune_modes: PruneModes,
storage: Arc<<N as NodeTypes>::Storage>,
) -> DatabaseProvider<TX, N>
pub const fn new_rw( tx: TX, chain_spec: Arc<<N as NodeTypes>::ChainSpec>, static_file_provider: StaticFileProvider<<N as NodeTypes>::Primitives>, prune_modes: PruneModes, storage: Arc<<N as NodeTypes>::Storage>, ) -> DatabaseProvider<TX, N>
Creates a provider with an inner read-write transaction.
§impl<Tx, N> DatabaseProvider<Tx, N>where
Tx: DbTx + DbTxMut + 'static,
N: NodeTypesForProvider,
<N as NodeTypes>::Primitives: NodePrimitives<BlockHeader = Header>,
impl<Tx, N> DatabaseProvider<Tx, N>where
Tx: DbTx + DbTxMut + 'static,
N: NodeTypesForProvider,
<N as NodeTypes>::Primitives: NodePrimitives<BlockHeader = Header>,
pub fn insert_historical_block(
&self,
block: RecoveredBlock<<DatabaseProvider<Tx, N> as BlockWriter>::Block>,
) -> Result<StoredBlockBodyIndices, ProviderError>
pub fn insert_historical_block( &self, block: RecoveredBlock<<DatabaseProvider<Tx, N> as BlockWriter>::Block>, ) -> Result<StoredBlockBodyIndices, ProviderError>
Inserts an historical block. Used for setting up test environments
Trait Implementations
§impl<TX, N> AccountExtReader for DatabaseProvider<TX, N>
impl<TX, N> AccountExtReader for DatabaseProvider<TX, N>
§fn changed_accounts_with_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<BTreeSet<Address>, ProviderError>
fn changed_accounts_with_range( &self, range: impl RangeBounds<u64>, ) -> Result<BTreeSet<Address>, ProviderError>
§fn basic_accounts(
&self,
iter: impl IntoIterator<Item = Address>,
) -> Result<Vec<(Address, Option<Account>)>, ProviderError>
fn basic_accounts( &self, iter: impl IntoIterator<Item = Address>, ) -> Result<Vec<(Address, Option<Account>)>, ProviderError>
AccountReader::basic_account
repeatedly. Read more§fn changed_accounts_and_blocks_with_range(
&self,
range: RangeInclusive<u64>,
) -> Result<BTreeMap<Address, Vec<u64>>, ProviderError>
fn changed_accounts_and_blocks_with_range( &self, range: RangeInclusive<u64>, ) -> Result<BTreeMap<Address, Vec<u64>>, ProviderError>
§impl<TX, N> AccountReader for DatabaseProvider<TX, N>
impl<TX, N> AccountReader for DatabaseProvider<TX, N>
§fn basic_account(
&self,
address: &Address,
) -> Result<Option<Account>, ProviderError>
fn basic_account( &self, address: &Address, ) -> Result<Option<Account>, ProviderError>
§impl<TX, N> AsRef<DatabaseProvider<TX, N>> for DatabaseProvider<TX, N>where
N: NodeTypes,
impl<TX, N> AsRef<DatabaseProvider<TX, N>> for DatabaseProvider<TX, N>where
N: NodeTypes,
§fn as_ref(&self) -> &DatabaseProvider<TX, N>
fn as_ref(&self) -> &DatabaseProvider<TX, N>
§impl<TX, N> BlockBodyIndicesProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> BlockBodyIndicesProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§fn block_body_indices(
&self,
num: u64,
) -> Result<Option<StoredBlockBodyIndices>, ProviderError>
fn block_body_indices( &self, num: u64, ) -> Result<Option<StoredBlockBodyIndices>, ProviderError>
§fn block_body_indices_range(
&self,
range: RangeInclusive<u64>,
) -> Result<Vec<StoredBlockBodyIndices>, ProviderError>
fn block_body_indices_range( &self, range: RangeInclusive<u64>, ) -> Result<Vec<StoredBlockBodyIndices>, ProviderError>
§impl<TX, N> BlockExecutionWriter for DatabaseProvider<TX, N>
impl<TX, N> BlockExecutionWriter for DatabaseProvider<TX, N>
§fn take_block_and_execution_above(
&self,
block: u64,
remove_from: StorageLocation,
) -> Result<Chain<<DatabaseProvider<TX, N> as NodePrimitivesProvider>::Primitives>, ProviderError>
fn take_block_and_execution_above( &self, block: u64, remove_from: StorageLocation, ) -> Result<Chain<<DatabaseProvider<TX, N> as NodePrimitivesProvider>::Primitives>, ProviderError>
§fn remove_block_and_execution_above(
&self,
block: u64,
remove_from: StorageLocation,
) -> Result<(), ProviderError>
fn remove_block_and_execution_above( &self, block: u64, remove_from: StorageLocation, ) -> Result<(), ProviderError>
§impl<TX, N> BlockHashReader for DatabaseProvider<TX, N>
impl<TX, N> BlockHashReader for DatabaseProvider<TX, N>
§fn block_hash(
&self,
number: u64,
) -> Result<Option<FixedBytes<32>>, ProviderError>
fn block_hash( &self, number: u64, ) -> Result<Option<FixedBytes<32>>, ProviderError>
None
if no block with this number
exists.§fn canonical_hashes_range(
&self,
start: u64,
end: u64,
) -> Result<Vec<FixedBytes<32>>, ProviderError>
fn canonical_hashes_range( &self, start: u64, end: u64, ) -> Result<Vec<FixedBytes<32>>, ProviderError>
§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.§impl<TX, N> BlockNumReader for DatabaseProvider<TX, N>
impl<TX, N> BlockNumReader for DatabaseProvider<TX, N>
§fn chain_info(&self) -> Result<ChainInfo, ProviderError>
fn chain_info(&self) -> Result<ChainInfo, ProviderError>
§fn best_block_number(&self) -> Result<u64, ProviderError>
fn best_block_number(&self) -> Result<u64, ProviderError>
§fn last_block_number(&self) -> Result<u64, ProviderError>
fn last_block_number(&self) -> Result<u64, ProviderError>
§fn block_number(
&self,
hash: FixedBytes<32>,
) -> Result<Option<u64>, ProviderError>
fn block_number( &self, hash: FixedBytes<32>, ) -> Result<Option<u64>, ProviderError>
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.§impl<TX, N> BlockReader for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> BlockReader for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§fn block(
&self,
id: HashOrNumber,
) -> Result<Option<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
fn block( &self, id: HashOrNumber, ) -> Result<Option<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
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.
§fn recovered_block(
&self,
id: HashOrNumber,
transaction_kind: TransactionVariant,
) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn recovered_block( &self, id: HashOrNumber, transaction_kind: TransactionVariant, ) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
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.
§type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
§fn find_block_by_hash(
&self,
hash: FixedBytes<32>,
source: BlockSource,
) -> Result<Option<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
fn find_block_by_hash( &self, hash: FixedBytes<32>, source: BlockSource, ) -> Result<Option<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
§fn pending_block(
&self,
) -> Result<Option<SealedBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn pending_block( &self, ) -> Result<Option<SealedBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
§fn pending_block_with_senders(
&self,
) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn pending_block_with_senders( &self, ) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
§fn pending_block_and_receipts(
&self,
) -> Result<Option<(SealedBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>, Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>)>, ProviderError>
fn pending_block_and_receipts( &self, ) -> Result<Option<(SealedBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>, Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>)>, ProviderError>
§fn sealed_block_with_senders(
&self,
id: HashOrNumber,
transaction_kind: TransactionVariant,
) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn sealed_block_with_senders( &self, id: HashOrNumber, transaction_kind: TransactionVariant, ) -> Result<Option<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
§fn block_range(
&self,
range: RangeInclusive<u64>,
) -> Result<Vec<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
fn block_range( &self, range: RangeInclusive<u64>, ) -> Result<Vec<<DatabaseProvider<TX, N> as BlockReader>::Block>, ProviderError>
§fn block_with_senders_range(
&self,
range: RangeInclusive<u64>,
) -> Result<Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn block_with_senders_range( &self, range: RangeInclusive<u64>, ) -> Result<Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
§fn recovered_block_range(
&self,
range: RangeInclusive<u64>,
) -> Result<Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
fn recovered_block_range( &self, range: RangeInclusive<u64>, ) -> Result<Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockReader>::Block>>, ProviderError>
§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>
§impl<TX, N> BlockWriter for DatabaseProvider<TX, N>
impl<TX, N> BlockWriter for DatabaseProvider<TX, N>
§fn insert_block(
&self,
block: RecoveredBlock<<DatabaseProvider<TX, N> as BlockWriter>::Block>,
write_to: StorageLocation,
) -> Result<StoredBlockBodyIndices, ProviderError>
fn insert_block( &self, block: RecoveredBlock<<DatabaseProvider<TX, N> as BlockWriter>::Block>, write_to: StorageLocation, ) -> Result<StoredBlockBodyIndices, ProviderError>
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
.
§fn append_blocks_with_state(
&self,
blocks: Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockWriter>::Block>>,
execution_outcome: &ExecutionOutcome<<DatabaseProvider<TX, N> as BlockWriter>::Receipt>,
hashed_state: HashedPostStateSorted,
trie_updates: TrieUpdates,
) -> Result<(), ProviderError>
fn append_blocks_with_state( &self, blocks: Vec<RecoveredBlock<<DatabaseProvider<TX, N> as BlockWriter>::Block>>, execution_outcome: &ExecutionOutcome<<DatabaseProvider<TX, N> as BlockWriter>::Receipt>, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> Result<(), ProviderError>
TODO(joshie): this fn should be moved to UnifiedStorageWriter
eventually
§type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
type Block = <<N as NodeTypes>::Primitives as NodePrimitives>::Block
§type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
ExecutionOutcome
.§fn append_block_bodies(
&self,
bodies: Vec<(u64, Option<<<N as NodeTypes>::Primitives as NodePrimitives>::BlockBody>)>,
write_to: StorageLocation,
) -> Result<(), ProviderError>
fn append_block_bodies( &self, bodies: Vec<(u64, Option<<<N as NodeTypes>::Primitives as NodePrimitives>::BlockBody>)>, write_to: StorageLocation, ) -> Result<(), ProviderError>
Bodies
stage and does not write to TransactionHashNumbers
and TransactionSenders
tables which are populated on later stages. Read more§fn remove_blocks_above(
&self,
block: u64,
remove_from: StorageLocation,
) -> Result<(), ProviderError>
fn remove_blocks_above( &self, block: u64, remove_from: StorageLocation, ) -> Result<(), ProviderError>
§fn remove_bodies_above(
&self,
block: u64,
remove_from: StorageLocation,
) -> Result<(), ProviderError>
fn remove_bodies_above( &self, block: u64, remove_from: StorageLocation, ) -> Result<(), ProviderError>
§impl<TX, N> ChainSpecProvider for DatabaseProvider<TX, N>
impl<TX, N> ChainSpecProvider for DatabaseProvider<TX, N>
§fn chain_spec(
&self,
) -> Arc<<DatabaseProvider<TX, N> as ChainSpecProvider>::ChainSpec>
fn chain_spec( &self, ) -> Arc<<DatabaseProvider<TX, N> as ChainSpecProvider>::ChainSpec>
Arc
to the chainspec.§impl<TX, N> ChainStateBlockReader for DatabaseProvider<TX, N>
impl<TX, N> ChainStateBlockReader for DatabaseProvider<TX, N>
§fn last_finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
fn last_finalized_block_number(&self) -> Result<Option<u64>, ProviderError>
§fn last_safe_block_number(&self) -> Result<Option<u64>, ProviderError>
fn last_safe_block_number(&self) -> Result<Option<u64>, ProviderError>
§impl<TX, N> ChainStateBlockWriter for DatabaseProvider<TX, N>
impl<TX, N> ChainStateBlockWriter for DatabaseProvider<TX, N>
§fn save_finalized_block_number(
&self,
block_number: u64,
) -> Result<(), ProviderError>
fn save_finalized_block_number( &self, block_number: u64, ) -> Result<(), ProviderError>
§fn save_safe_block_number(&self, block_number: u64) -> Result<(), ProviderError>
fn save_safe_block_number(&self, block_number: u64) -> Result<(), ProviderError>
§impl<TX, N> ChangeSetReader for DatabaseProvider<TX, N>
impl<TX, N> ChangeSetReader for DatabaseProvider<TX, N>
§fn account_block_changeset(
&self,
block_number: u64,
) -> Result<Vec<AccountBeforeTx>, ProviderError>
fn account_block_changeset( &self, block_number: u64, ) -> Result<Vec<AccountBeforeTx>, ProviderError>
§impl<TX, N> DBProvider for DatabaseProvider<TX, N>
impl<TX, N> DBProvider for DatabaseProvider<TX, N>
§fn tx_ref(&self) -> &<DatabaseProvider<TX, N> as DBProvider>::Tx
fn tx_ref(&self) -> &<DatabaseProvider<TX, N> as DBProvider>::Tx
§fn tx_mut(&mut self) -> &mut <DatabaseProvider<TX, N> as DBProvider>::Tx
fn tx_mut(&mut self) -> &mut <DatabaseProvider<TX, N> as DBProvider>::Tx
§fn into_tx(self) -> <DatabaseProvider<TX, N> as DBProvider>::Tx
fn into_tx(self) -> <DatabaseProvider<TX, N> as DBProvider>::Tx
§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>
fn cursor_read_collect<T>( &self, range: impl RangeBounds<<T as Table>::Key>, ) -> Result<Vec<<T as Table>::Value>, ProviderError>
§fn cursor_collect<T>(
&self,
cursor: &mut impl DbCursorRO<T>,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<Vec<<T as Table>::Value>, ProviderError>
fn cursor_collect<T>( &self, cursor: &mut impl DbCursorRO<T>, range: impl RangeBounds<<T as Table>::Key>, ) -> Result<Vec<<T as Table>::Value>, ProviderError>
§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>
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>
§fn remove<T>(
&self,
range: impl RangeBounds<<T as Table>::Key>,
) -> Result<usize, DatabaseError>
fn remove<T>( &self, range: impl RangeBounds<<T as Table>::Key>, ) -> Result<usize, DatabaseError>
§impl<TX, N> Debug for DatabaseProvider<TX, N>
impl<TX, N> Debug for DatabaseProvider<TX, N>
§impl<DB, N> From<DatabaseProviderRW<DB, N>> for DatabaseProvider<<DB as Database>::TXMut, N>
impl<DB, N> From<DatabaseProviderRW<DB, N>> for DatabaseProvider<<DB as Database>::TXMut, N>
§fn from(
provider: DatabaseProviderRW<DB, N>,
) -> DatabaseProvider<<DB as Database>::TXMut, N>
fn from( provider: DatabaseProviderRW<DB, N>, ) -> DatabaseProvider<<DB as Database>::TXMut, N>
§impl<TX, N> HashingWriter for DatabaseProvider<TX, N>
impl<TX, N> HashingWriter for DatabaseProvider<TX, N>
§fn unwind_account_hashing<'a>(
&self,
changesets: impl Iterator<Item = &'a (u64, AccountBeforeTx)>,
) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
fn unwind_account_hashing<'a>( &self, changesets: impl Iterator<Item = &'a (u64, AccountBeforeTx)>, ) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
§fn unwind_account_hashing_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
fn unwind_account_hashing_range( &self, range: impl RangeBounds<u64>, ) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
§fn insert_account_for_hashing(
&self,
changesets: impl IntoIterator<Item = (Address, Option<Account>)>,
) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
fn insert_account_for_hashing( &self, changesets: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> Result<BTreeMap<FixedBytes<32>, Option<Account>>, ProviderError>
AccountsHistory
table. Read more§fn unwind_storage_hashing(
&self,
changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>,
) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
fn unwind_storage_hashing( &self, changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>, ) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
§fn unwind_storage_hashing_range(
&self,
range: impl RangeBounds<BlockNumberAddress>,
) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
fn unwind_storage_hashing_range( &self, range: impl RangeBounds<BlockNumberAddress>, ) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
§fn insert_storage_for_hashing(
&self,
storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>,
) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> Result<HashMap<FixedBytes<32>, BTreeSet<FixedBytes<32>>, RandomState>, ProviderError>
§fn insert_hashes(
&self,
range: RangeInclusive<u64>,
end_block_hash: FixedBytes<32>,
expected_state_root: FixedBytes<32>,
) -> Result<(), ProviderError>
fn insert_hashes( &self, range: RangeInclusive<u64>, end_block_hash: FixedBytes<32>, expected_state_root: FixedBytes<32>, ) -> Result<(), ProviderError>
§impl<TX, N> HeaderProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> HeaderProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
§fn header(
&self,
block_hash: &FixedBytes<32>,
) -> Result<Option<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
fn header( &self, block_hash: &FixedBytes<32>, ) -> Result<Option<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
§fn header_by_number(
&self,
num: u64,
) -> Result<Option<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
fn header_by_number( &self, num: u64, ) -> Result<Option<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
§fn header_td(
&self,
block_hash: &FixedBytes<32>,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn header_td( &self, block_hash: &FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
§fn header_td_by_number(
&self,
number: u64,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn header_td_by_number( &self, number: u64, ) -> Result<Option<Uint<256, 4>>, ProviderError>
§fn headers_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
fn headers_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<<DatabaseProvider<TX, N> as HeaderProvider>::Header>, ProviderError>
§fn sealed_header(
&self,
number: u64,
) -> Result<Option<SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
fn sealed_header( &self, number: u64, ) -> Result<Option<SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
§fn sealed_headers_while(
&self,
range: impl RangeBounds<u64>,
predicate: impl FnMut(&SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>) -> bool,
) -> Result<Vec<SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
fn sealed_headers_while( &self, range: impl RangeBounds<u64>, predicate: impl FnMut(&SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>) -> bool, ) -> Result<Vec<SealedHeader<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
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>
§impl<TX, N> HeaderSyncGapProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> HeaderSyncGapProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
type Header = <<N as NodeTypes>::Primitives as NodePrimitives>::BlockHeader
§fn sync_gap(
&self,
tip: Receiver<FixedBytes<32>>,
highest_uninterrupted_block: u64,
) -> Result<HeaderSyncGap<<DatabaseProvider<TX, N> as HeaderSyncGapProvider>::Header>, ProviderError>
fn sync_gap( &self, tip: Receiver<FixedBytes<32>>, highest_uninterrupted_block: u64, ) -> Result<HeaderSyncGap<<DatabaseProvider<TX, N> as HeaderSyncGapProvider>::Header>, ProviderError>
§impl<TX, N> HistoryWriter for DatabaseProvider<TX, N>
impl<TX, N> HistoryWriter for DatabaseProvider<TX, N>
§fn unwind_account_history_indices<'a>(
&self,
changesets: impl Iterator<Item = &'a (u64, AccountBeforeTx)>,
) -> Result<usize, ProviderError>
fn unwind_account_history_indices<'a>( &self, changesets: impl Iterator<Item = &'a (u64, AccountBeforeTx)>, ) -> Result<usize, ProviderError>
§fn unwind_account_history_indices_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<usize, ProviderError>
fn unwind_account_history_indices_range( &self, range: impl RangeBounds<u64>, ) -> Result<usize, ProviderError>
§fn insert_account_history_index(
&self,
account_transitions: impl IntoIterator<Item = (Address, impl IntoIterator<Item = u64>)>,
) -> Result<(), ProviderError>
fn insert_account_history_index( &self, account_transitions: impl IntoIterator<Item = (Address, impl IntoIterator<Item = u64>)>, ) -> Result<(), ProviderError>
§fn unwind_storage_history_indices(
&self,
changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>,
) -> Result<usize, ProviderError>
fn unwind_storage_history_indices( &self, changesets: impl Iterator<Item = (BlockNumberAddress, StorageEntry)>, ) -> Result<usize, ProviderError>
§fn unwind_storage_history_indices_range(
&self,
range: impl RangeBounds<BlockNumberAddress>,
) -> Result<usize, ProviderError>
fn unwind_storage_history_indices_range( &self, range: impl RangeBounds<BlockNumberAddress>, ) -> Result<usize, ProviderError>
§fn insert_storage_history_index(
&self,
storage_transitions: impl IntoIterator<Item = ((Address, FixedBytes<32>), impl IntoIterator<Item = u64>)>,
) -> Result<(), ProviderError>
fn insert_storage_history_index( &self, storage_transitions: impl IntoIterator<Item = ((Address, FixedBytes<32>), impl IntoIterator<Item = u64>)>, ) -> Result<(), ProviderError>
§fn update_history_indices(
&self,
range: RangeInclusive<u64>,
) -> Result<(), ProviderError>
fn update_history_indices( &self, range: RangeInclusive<u64>, ) -> Result<(), ProviderError>
§impl<TX, N> NodePrimitivesProvider for DatabaseProvider<TX, N>where
N: NodeTypes,
impl<TX, N> NodePrimitivesProvider for DatabaseProvider<TX, N>where
N: NodeTypes,
§type Primitives = <N as NodeTypes>::Primitives
type Primitives = <N as NodeTypes>::Primitives
§impl<TX, N> OmmersProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> OmmersProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§fn ommers(
&self,
id: HashOrNumber,
) -> Result<Option<Vec<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
fn ommers( &self, id: HashOrNumber, ) -> Result<Option<Vec<<DatabaseProvider<TX, N> as HeaderProvider>::Header>>, ProviderError>
Returns the ommers for the block with matching id from the database.
If the block is not found, this returns None
.
If the block exists, but doesn’t contain ommers, this returns None
.
§impl<TX, N> PruneCheckpointReader for DatabaseProvider<TX, N>
impl<TX, N> PruneCheckpointReader for DatabaseProvider<TX, N>
§fn get_prune_checkpoint(
&self,
segment: PruneSegment,
) -> Result<Option<PruneCheckpoint>, ProviderError>
fn get_prune_checkpoint( &self, segment: PruneSegment, ) -> Result<Option<PruneCheckpoint>, ProviderError>
§fn get_prune_checkpoints(
&self,
) -> Result<Vec<(PruneSegment, PruneCheckpoint)>, ProviderError>
fn get_prune_checkpoints( &self, ) -> Result<Vec<(PruneSegment, PruneCheckpoint)>, ProviderError>
§impl<TX, N> PruneCheckpointWriter for DatabaseProvider<TX, N>
impl<TX, N> PruneCheckpointWriter for DatabaseProvider<TX, N>
§fn save_prune_checkpoint(
&self,
segment: PruneSegment,
checkpoint: PruneCheckpoint,
) -> Result<(), ProviderError>
fn save_prune_checkpoint( &self, segment: PruneSegment, checkpoint: PruneCheckpoint, ) -> Result<(), ProviderError>
§impl<TX, N> ReceiptProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> ReceiptProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
§fn receipt(
&self,
id: u64,
) -> Result<Option<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
fn receipt( &self, id: u64, ) -> Result<Option<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
§fn receipt_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
fn receipt_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
§fn receipts_by_block(
&self,
block: HashOrNumber,
) -> Result<Option<Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>>, ProviderError>
fn receipts_by_block( &self, block: HashOrNumber, ) -> Result<Option<Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>>, ProviderError>
§fn receipts_by_tx_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
fn receipts_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<<DatabaseProvider<TX, N> as ReceiptProvider>::Receipt>, ProviderError>
§impl<TX, N> StageCheckpointReader for DatabaseProvider<TX, N>
impl<TX, N> StageCheckpointReader for DatabaseProvider<TX, N>
§fn get_stage_checkpoint_progress(
&self,
id: StageId,
) -> Result<Option<Vec<u8>>, ProviderError>
fn get_stage_checkpoint_progress( &self, id: StageId, ) -> Result<Option<Vec<u8>>, ProviderError>
Get stage checkpoint progress.
§fn get_stage_checkpoint(
&self,
id: StageId,
) -> Result<Option<StageCheckpoint>, ProviderError>
fn get_stage_checkpoint( &self, id: StageId, ) -> Result<Option<StageCheckpoint>, ProviderError>
§fn get_all_checkpoints(
&self,
) -> Result<Vec<(String, StageCheckpoint)>, ProviderError>
fn get_all_checkpoints( &self, ) -> Result<Vec<(String, StageCheckpoint)>, ProviderError>
§impl<TX, N> StageCheckpointWriter for DatabaseProvider<TX, N>
impl<TX, N> StageCheckpointWriter for DatabaseProvider<TX, N>
§fn save_stage_checkpoint(
&self,
id: StageId,
checkpoint: StageCheckpoint,
) -> Result<(), ProviderError>
fn save_stage_checkpoint( &self, id: StageId, checkpoint: StageCheckpoint, ) -> Result<(), ProviderError>
Save stage checkpoint.
§fn save_stage_checkpoint_progress(
&self,
id: StageId,
checkpoint: Vec<u8>,
) -> Result<(), ProviderError>
fn save_stage_checkpoint_progress( &self, id: StageId, checkpoint: Vec<u8>, ) -> Result<(), ProviderError>
Save stage checkpoint progress.
§fn update_pipeline_stages(
&self,
block_number: u64,
drop_stage_checkpoint: bool,
) -> Result<(), ProviderError>
fn update_pipeline_stages( &self, block_number: u64, drop_stage_checkpoint: bool, ) -> Result<(), ProviderError>
§impl<TX, N> StateCommitmentProvider for DatabaseProvider<TX, N>
impl<TX, N> StateCommitmentProvider for DatabaseProvider<TX, N>
§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.§impl<TX, N> StateWriter for DatabaseProvider<TX, N>
impl<TX, N> StateWriter for DatabaseProvider<TX, N>
§fn remove_state_above(
&self,
block: u64,
remove_receipts_from: StorageLocation,
) -> Result<(), ProviderError>
fn remove_state_above( &self, block: u64, remove_receipts_from: StorageLocation, ) -> Result<(), ProviderError>
Remove the last N blocks of state.
The latest state will be unwound
- Iterate over the
BlockBodyIndices
table to get all the transaction ids. - Iterate over the
StorageChangeSets
table and theAccountChangeSets
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
§fn take_state_above(
&self,
block: u64,
remove_receipts_from: StorageLocation,
) -> Result<ExecutionOutcome<<DatabaseProvider<TX, N> as StateWriter>::Receipt>, ProviderError>
fn take_state_above( &self, block: u64, remove_receipts_from: StorageLocation, ) -> Result<ExecutionOutcome<<DatabaseProvider<TX, N> as StateWriter>::Receipt>, ProviderError>
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
table to get all the transaction ids. - Iterate over the
StorageChangeSets
table and theAccountChangeSets
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
§type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
type Receipt = <<N as NodeTypes>::Primitives as NodePrimitives>::Receipt
ExecutionOutcome
.§fn write_state(
&self,
execution_outcome: &ExecutionOutcome<<DatabaseProvider<TX, N> as StateWriter>::Receipt>,
is_value_known: OriginalValuesKnown,
write_receipts_to: StorageLocation,
) -> Result<(), ProviderError>
fn write_state( &self, execution_outcome: &ExecutionOutcome<<DatabaseProvider<TX, N> as StateWriter>::Receipt>, is_value_known: OriginalValuesKnown, write_receipts_to: StorageLocation, ) -> Result<(), ProviderError>
static_file_producer
is
Some
. It should be None
if there is any kind of pruning/filtering over the receipts.§fn write_state_reverts(
&self,
reverts: PlainStateReverts,
first_block: u64,
) -> Result<(), ProviderError>
fn write_state_reverts( &self, reverts: PlainStateReverts, first_block: u64, ) -> Result<(), ProviderError>
§fn write_state_changes(
&self,
changes: StateChangeset,
) -> Result<(), ProviderError>
fn write_state_changes( &self, changes: StateChangeset, ) -> Result<(), ProviderError>
§fn write_hashed_state(
&self,
hashed_state: &HashedPostStateSorted,
) -> Result<(), ProviderError>
fn write_hashed_state( &self, hashed_state: &HashedPostStateSorted, ) -> Result<(), ProviderError>
§impl<TX, N> StaticFileProviderFactory for DatabaseProvider<TX, N>where
N: NodeTypes,
impl<TX, N> StaticFileProviderFactory for DatabaseProvider<TX, N>where
N: NodeTypes,
§fn static_file_provider(
&self,
) -> StaticFileProvider<<DatabaseProvider<TX, N> as NodePrimitivesProvider>::Primitives>
fn static_file_provider( &self, ) -> StaticFileProvider<<DatabaseProvider<TX, N> as NodePrimitivesProvider>::Primitives>
Returns a static file provider
§impl<TX, N> StatsReader for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> StatsReader for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§fn count_entries<T>(&self) -> Result<usize, ProviderError>where
T: Table,
fn count_entries<T>(&self) -> Result<usize, ProviderError>where
T: Table,
§impl<TX, N> StorageChangeSetReader for DatabaseProvider<TX, N>
impl<TX, N> StorageChangeSetReader for DatabaseProvider<TX, N>
§fn storage_changeset(
&self,
block_number: u64,
) -> Result<Vec<(BlockNumberAddress, StorageEntry)>, ProviderError>
fn storage_changeset( &self, block_number: u64, ) -> Result<Vec<(BlockNumberAddress, StorageEntry)>, ProviderError>
§impl<TX, N> StorageReader for DatabaseProvider<TX, N>
impl<TX, N> StorageReader for DatabaseProvider<TX, N>
§fn plain_state_storages(
&self,
addresses_with_keys: impl IntoIterator<Item = (Address, impl IntoIterator<Item = FixedBytes<32>>)>,
) -> Result<Vec<(Address, Vec<StorageEntry>)>, ProviderError>
fn plain_state_storages( &self, addresses_with_keys: impl IntoIterator<Item = (Address, impl IntoIterator<Item = FixedBytes<32>>)>, ) -> Result<Vec<(Address, Vec<StorageEntry>)>, ProviderError>
§fn changed_storages_with_range(
&self,
range: RangeInclusive<u64>,
) -> Result<BTreeMap<Address, BTreeSet<FixedBytes<32>>>, ProviderError>
fn changed_storages_with_range( &self, range: RangeInclusive<u64>, ) -> Result<BTreeMap<Address, BTreeSet<FixedBytes<32>>>, ProviderError>
§fn changed_storages_and_blocks_with_range(
&self,
range: RangeInclusive<u64>,
) -> Result<BTreeMap<(Address, FixedBytes<32>), Vec<u64>>, ProviderError>
fn changed_storages_and_blocks_with_range( &self, range: RangeInclusive<u64>, ) -> Result<BTreeMap<(Address, FixedBytes<32>), Vec<u64>>, ProviderError>
§impl<TX, N> StorageTrieWriter for DatabaseProvider<TX, N>
impl<TX, N> StorageTrieWriter for DatabaseProvider<TX, N>
§fn write_storage_trie_updates(
&self,
storage_tries: &HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>,
) -> Result<usize, ProviderError>
fn write_storage_trie_updates( &self, storage_tries: &HashMap<FixedBytes<32>, StorageTrieUpdates, FbBuildHasher<32>>, ) -> Result<usize, ProviderError>
Writes storage trie updates from the given storage trie map. First sorts the storage trie updates by the hashed address, writing in sorted order.
§fn write_individual_storage_trie_updates(
&self,
hashed_address: FixedBytes<32>,
updates: &StorageTrieUpdates,
) -> Result<usize, ProviderError>
fn write_individual_storage_trie_updates( &self, hashed_address: FixedBytes<32>, updates: &StorageTrieUpdates, ) -> Result<usize, ProviderError>
§impl<TX, N> TransactionsProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> TransactionsProvider for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§type Transaction = <<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx
type Transaction = <<N as NodeTypes>::Primitives as NodePrimitives>::SignedTx
§fn transaction_id(
&self,
tx_hash: FixedBytes<32>,
) -> Result<Option<u64>, ProviderError>
fn transaction_id( &self, tx_hash: FixedBytes<32>, ) -> Result<Option<u64>, ProviderError>
§fn transaction_by_id(
&self,
id: u64,
) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
fn transaction_by_id( &self, id: u64, ) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
§fn transaction_by_id_unhashed(
&self,
id: u64,
) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
fn transaction_by_id_unhashed( &self, id: u64, ) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
§fn transaction_by_hash(
&self,
hash: FixedBytes<32>,
) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
fn transaction_by_hash( &self, hash: FixedBytes<32>, ) -> Result<Option<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
§fn transaction_by_hash_with_meta(
&self,
tx_hash: FixedBytes<32>,
) -> Result<Option<(<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction, TransactionMeta)>, ProviderError>
fn transaction_by_hash_with_meta( &self, tx_hash: FixedBytes<32>, ) -> Result<Option<(<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction, TransactionMeta)>, ProviderError>
§fn transaction_block(&self, id: u64) -> Result<Option<u64>, ProviderError>
fn transaction_block(&self, id: u64) -> Result<Option<u64>, ProviderError>
§fn transactions_by_block(
&self,
id: HashOrNumber,
) -> Result<Option<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>>, ProviderError>
fn transactions_by_block( &self, id: HashOrNumber, ) -> Result<Option<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>>, ProviderError>
§fn transactions_by_block_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>>, ProviderError>
fn transactions_by_block_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>>, ProviderError>
§fn transactions_by_tx_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
fn transactions_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<<DatabaseProvider<TX, N> as TransactionsProvider>::Transaction>, ProviderError>
§fn senders_by_tx_range(
&self,
range: impl RangeBounds<u64>,
) -> Result<Vec<Address>, ProviderError>
fn senders_by_tx_range( &self, range: impl RangeBounds<u64>, ) -> Result<Vec<Address>, ProviderError>
§fn transaction_sender(&self, id: u64) -> Result<Option<Address>, ProviderError>
fn transaction_sender(&self, id: u64) -> Result<Option<Address>, ProviderError>
§impl<TX, N> TransactionsProviderExt for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
impl<TX, N> TransactionsProviderExt for DatabaseProvider<TX, N>where
TX: DbTx + 'static,
N: NodeTypesForProvider,
§fn transaction_hashes_by_range(
&self,
tx_range: Range<u64>,
) -> Result<Vec<(FixedBytes<32>, u64)>, ProviderError>
fn transaction_hashes_by_range( &self, tx_range: Range<u64>, ) -> Result<Vec<(FixedBytes<32>, u64)>, ProviderError>
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>
§impl<TX, N> TrieWriter for DatabaseProvider<TX, N>
impl<TX, N> TrieWriter for DatabaseProvider<TX, N>
§fn write_trie_updates(
&self,
trie_updates: &TrieUpdates,
) -> Result<usize, ProviderError>
fn write_trie_updates( &self, trie_updates: &TrieUpdates, ) -> Result<usize, ProviderError>
Writes trie updates. Returns the number of entries modified.
§impl<TX, N> TryIntoHistoricalStateProvider for DatabaseProvider<TX, N>
impl<TX, N> TryIntoHistoricalStateProvider for DatabaseProvider<TX, N>
§fn try_into_history_at_block(
self,
block_number: u64,
) -> Result<Box<dyn StateProvider>, ProviderError>
fn try_into_history_at_block( self, block_number: u64, ) -> Result<Box<dyn StateProvider>, ProviderError>
StateProvider
indexed by the given historic block number.