pub struct WalletDb<C, P, CL, R> { /* private fields */ }Expand description
A wrapper for the SQLite connection to the wallet database, along with a capability to read the
system from the clock. A WalletDb encapsulates the full set of capabilities that are required
in order to implement the WalletRead, WalletWrite and WalletCommitmentTrees traits.
Implementations§
Source§impl<P, CL, R> WalletDb<Connection, P, CL, R>
impl<P, CL, R> WalletDb<Connection, P, CL, R>
Sourcepub fn for_path<F: AsRef<Path>>(
path: F,
params: P,
clock: CL,
rng: R,
) -> Result<Self, Error>
pub fn for_path<F: AsRef<Path>>( path: F, params: P, clock: CL, rng: R, ) -> Result<Self, Error>
Construct a WalletDb instance that connects to the wallet database stored at the
specified path.
§Parameters
path: The path to the SQLite database used to store wallet data.params: Parameters associated with the Zcash network that the wallet will connect to.clock: The clock to use in the case that the backend needs access to the system time.rng: The random number generation capability to be exposed by the createdWalletDbinstance.
Source§impl<C, P, CL, R> WalletDb<C, P, CL, R>
impl<C, P, CL, R> WalletDb<C, P, CL, R>
Sourcepub fn with_anchor_retention_interval(
self,
interval: AnchorRetentionInterval,
) -> Self
pub fn with_anchor_retention_interval( self, interval: AnchorRetentionInterval, ) -> Self
Sets the interval on which this wallet retains note commitment tree checkpoints as durable anchors, exempt from ordinary checkpoint pruning.
A ZIP 318 pool migration planned over this wallet reads the interval back through
WalletRead::anchor_retention_interval and draws its transfers’ anchors from the same
grid, so the two cannot disagree.
This setting is not persisted, but it does not need to be: once a migration is committed, the grid it was committed under is recorded with it, and this wallet keeps retaining that grid’s boundaries for as long as the migration is in flight, whatever it is currently configured with. Reopening the wallet without reapplying a non-default interval therefore cannot strand an in-flight migration; it only affects what grid the NEXT migration is planned against.
The default is AnchorRetentionInterval::ZIP_318, which every wallet on the production
network must use.
Sourcepub fn set_anchor_retention_interval(
&mut self,
interval: AnchorRetentionInterval,
)
pub fn set_anchor_retention_interval( &mut self, interval: AnchorRetentionInterval, )
Sets the anchor retention interval on an existing handle; see
Self::with_anchor_retention_interval, of which this is the by-reference form.
Source§impl<C, P, CL, R> WalletDb<C, P, CL, R>
impl<C, P, CL, R> WalletDb<C, P, CL, R>
Sourcepub fn with_gap_limits(self, gap_limits: GapLimits) -> Self
Available on crate feature transparent-inputs only.
pub fn with_gap_limits(self, gap_limits: GapLimits) -> Self
transparent-inputs only.Sets the gap limits to be used by the wallet in transparent address generation.
Source§impl<C: Borrow<Connection>, P, CL, R> WalletDb<C, P, CL, R>
impl<C: Borrow<Connection>, P, CL, R> WalletDb<C, P, CL, R>
Sourcepub fn from_connection(conn: C, params: P, clock: CL, rng: R) -> Self
pub fn from_connection(conn: C, params: P, clock: CL, rng: R) -> Self
Constructs a new wrapper around the given connection.
This is provided for use cases such as connection pooling, where conn may be an
&mut rusqlite::Connection.
The caller must ensure that rusqlite::vtab::array::load_module has been called
on the connection.
§Parameters
conn: A connection to the wallet database.params: Parameters associated with the Zcash network that the wallet will connect to.clock: The clock to use in the case that the backend needs access to the system time.rng: The random number generation capability to be exposed by the createdWalletDbinstance.
Source§impl<C: BorrowMut<Connection>, P, CL, R> WalletDb<C, P, CL, R>
impl<C: BorrowMut<Connection>, P, CL, R> WalletDb<C, P, CL, R>
Sourcepub fn transactionally<F, A, E: From<Error>>(&mut self, f: F) -> Result<A, E>
pub fn transactionally<F, A, E: From<Error>>(&mut self, f: F) -> Result<A, E>
Performs several wallet database operations atomically.
This has two main uses:
- Ensuring that several
WalletReadand/orWalletWriteoperations either all succeed, or nothing happens. If an error occurs inside the given function, any operations completed by it are rolled back. - Amortizing the cost of database transactionality. If several identical
operations are planned in sequence (e.g.
WalletWrite::store_decrypted_tx), this function can be used to avoid the overhead of a separate database transaction per insert.
Sourcepub fn transactionally_with_extension<F, A, E: From<Error>>(
&mut self,
f: F,
) -> Result<A, E>where
F: FnOnce(&mut WalletDb<SqlTransaction<'_>, &P, &CL, &mut R>, &ExtensionTransaction<'_>) -> Result<A, E>,
pub fn transactionally_with_extension<F, A, E: From<Error>>(
&mut self,
f: F,
) -> Result<A, E>where
F: FnOnce(&mut WalletDb<SqlTransaction<'_>, &P, &CL, &mut R>, &ExtensionTransaction<'_>) -> Result<A, E>,
Performs wallet database operations and writes to application-owned extension tables atomically within a single database transaction.
This behaves like WalletDb::transactionally, but additionally provides an
ExtensionTransaction handle sharing the same transaction. This allows an
application to pair a wallet operation (such as importing an account) with writes to
its own tables created via WalletMigrator::with_external_migrations, so that
either both take effect or neither does.
The extension handle restricts the statements it will execute; see
ExtensionTransaction for the exact authorization policy. In particular, writes
are permitted only against tables whose names begin with the ext_ prefix.
§Examples
wallet_db.transactionally_with_extension(|wdb, ext| {
let account = wdb.import_account_ufvk(
"external account",
&ufvk,
&birthday,
AccountPurpose::ViewOnly,
None,
)?;
ext.execute(
"INSERT INTO ext_myapp_accounts (account_uuid, label) VALUES (?1, ?2)",
(account.id().expose_uuid(), "external account"),
)?;
Ok::<_, SqliteClientError>(account)
})?;Sourcepub fn check_witnesses(
&mut self,
) -> Result<Vec<Range<BlockHeight>>, SqliteClientError>
pub fn check_witnesses( &mut self, ) -> Result<Vec<Range<BlockHeight>>, SqliteClientError>
Attempts to construct a witness for each note belonging to the wallet that is believed by the wallet to currently be spendable, and returns a vector of the ranges that must be rescanned in order to correct missing witness data.
This method is intended for repairing wallets that broke due to bugs in shardtree.
Sourcepub fn queue_rescans(
&mut self,
rescan_ranges: NonEmpty<Range<BlockHeight>>,
priority: ScanPriority,
) -> Result<(), SqliteClientError>
pub fn queue_rescans( &mut self, rescan_ranges: NonEmpty<Range<BlockHeight>>, priority: ScanPriority, ) -> Result<(), SqliteClientError>
Updates the scan queue by inserting scan ranges for the given range of block heights, with the specified scanning priority.
Source§impl<C: BorrowMut<Connection>, P, CL: Clock, R: RngCore> WalletDb<C, P, CL, R>
impl<C: BorrowMut<Connection>, P, CL: Clock, R: RngCore> WalletDb<C, P, CL, R>
Sourcepub fn schedule_ephemeral_address_checks(
&mut self,
) -> Result<(), SqliteClientError>
Available on crate feature transparent-inputs only.
pub fn schedule_ephemeral_address_checks( &mut self, ) -> Result<(), SqliteClientError>
transparent-inputs only.For each ephemeral address in the wallet, ensure that the transaction data request queue contains a request for the wallet to check for UTXOs belonging to that address at some time during the next 24-hour period.
We use randomized scheduling of ephemeral address checks to ensure that a lightwalletd-compromising adversary cannot use temporal clustering to determine what ephemeral addresses belong to a given wallet.
Trait Implementations§
Source§impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> AddressStore for WalletDb<C, P, CL, R>
Available on crate feature transparent-inputs only.
impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> AddressStore for WalletDb<C, P, CL, R>
transparent-inputs only.Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§type AccountRef = AccountRef
type AccountRef = AccountRef
Source§fn find_gap_start(
&self,
account_ref: Self::AccountRef,
key_scope: TransparentKeyScope,
gap_limit: u32,
) -> Result<Option<NonHardenedChildIndex>, Self::Error>
fn find_gap_start( &self, account_ref: Self::AccountRef, key_scope: TransparentKeyScope, gap_limit: u32, ) -> Result<Option<NonHardenedChildIndex>, Self::Error>
gap_limit
indices in the given account, considering only addresses derived for the specified key scope. Read moreSource§fn store_address_range(
&mut self,
account_id: Self::AccountRef,
key_scope: TransparentKeyScope,
list: Vec<(Address, TransparentAddress, NonHardenedChildIndex)>,
) -> Result<(), Self::Error>
fn store_address_range( &mut self, account_id: Self::AccountRef, key_scope: TransparentKeyScope, list: Vec<(Address, TransparentAddress, NonHardenedChildIndex)>, ) -> Result<(), Self::Error>
Source§impl<C: Borrow<Connection>, P: Parameters, CL, R> InputSource for WalletDb<C, P, CL, R>
impl<C: Borrow<Connection>, P: Parameters, CL, R> InputSource for WalletDb<C, P, CL, R>
Source§fn get_account_metadata(
&self,
account_id: Self::AccountId,
selector: &NoteFilter,
target_height: TargetHeight,
exclude: &[Self::NoteRef],
lock_filter: LockFilter<'_>,
) -> Result<AccountMeta, Self::Error>
fn get_account_metadata( &self, account_id: Self::AccountId, selector: &NoteFilter, target_height: TargetHeight, exclude: &[Self::NoteRef], lock_filter: LockFilter<'_>, ) -> Result<AccountMeta, Self::Error>
Returns metadata for the spendable notes in the wallet.
Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§type NoteRef = ReceivedNoteId
type NoteRef = ReceivedNoteId
Source§type AccountId = AccountUuid
type AccountId = AccountUuid
Source§fn get_spendable_note(
&self,
txid: &TxId,
protocol: ShieldedPool,
index: u32,
target_height: TargetHeight,
lock_filter: LockFilter<'_>,
) -> Result<Option<ReceivedNote<Self::NoteRef, Note>>, Self::Error>
fn get_spendable_note( &self, txid: &TxId, protocol: ShieldedPool, index: u32, target_height: TargetHeight, lock_filter: LockFilter<'_>, ) -> Result<Option<ReceivedNote<Self::NoteRef, Note>>, Self::Error>
Source§fn anchor_computable(
&self,
protocol: ShieldedPool,
height: BlockHeight,
) -> Result<bool, Self::Error>
fn anchor_computable( &self, protocol: ShieldedPool, height: BlockHeight, ) -> Result<bool, Self::Error>
height for spends from the given pool: whether
this data source can produce the note commitment tree root, and witnesses to it, as of the
end of that block. Read moreSource§fn select_spendable_notes(
&self,
account: Self::AccountId,
target_value: TargetValue,
sources: &[ShieldedPool],
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
exclude: &[Self::NoteRef],
lock_filter: LockFilter<'_>,
) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
fn select_spendable_notes( &self, account: Self::AccountId, target_value: TargetValue, sources: &[ShieldedPool], target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, exclude: &[Self::NoteRef], lock_filter: LockFilter<'_>, ) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
lock_filter (see LockFilter;
a LockFilter::Policy carrying the default Exclude selects none).Source§fn select_single_spendable_note(
&self,
account: Self::AccountId,
value: Zatoshis,
sources: &[ShieldedPool],
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
exclude: &[Self::NoteRef],
lock_filter: LockFilter<'_>,
) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
fn select_single_spendable_note( &self, account: Self::AccountId, value: Zatoshis, sources: &[ShieldedPool], target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, exclude: &[Self::NoteRef], lock_filter: LockFilter<'_>, ) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
value, drawn
from the first pool in sources (in the given preference order) that holds one. The
returned collection contains at most one note; it is empty when no single eligible note
covers the value. Read moreSource§fn select_unspent_notes(
&self,
account: Self::AccountId,
sources: &[ShieldedPool],
target_height: TargetHeight,
exclude: &[Self::NoteRef],
lock_filter: LockFilter<'_>,
) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
fn select_unspent_notes( &self, account: Self::AccountId, sources: &[ShieldedPool], target_height: TargetHeight, exclude: &[Self::NoteRef], lock_filter: LockFilter<'_>, ) -> Result<ReceivedNotes<Self::NoteRef>, Self::Error>
lock_filter (see LockFilter;
a LockFilter::Policy carrying the default Exclude selects none).Source§fn get_unspent_transparent_output(
&self,
outpoint: &OutPoint,
target_height: TargetHeight,
) -> Result<Option<WalletTransparentOutput<Self::AccountId>>, Self::Error>
fn get_unspent_transparent_output( &self, outpoint: &OutPoint, target_height: TargetHeight, ) -> Result<Option<WalletTransparentOutput<Self::AccountId>>, Self::Error>
transparent-inputs only.outpoint if it is considered
spendable as of the provided target_height. Read moreSource§fn get_spendable_transparent_outputs(
&self,
address: &TransparentAddress,
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
output_filter: CoinbaseFilter,
lock_filter: LockFilter<'_>,
) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
fn get_spendable_transparent_outputs( &self, address: &TransparentAddress, target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, output_filter: CoinbaseFilter, lock_filter: LockFilter<'_>, ) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
transparent-inputs only.address
such that, at height target_height: Read moreSource§fn get_spendable_transparent_outputs_for_addresses(
&self,
addresses: &[TransparentAddress],
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
output_filter: CoinbaseFilter,
lock_filter: LockFilter<'_>,
) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
fn get_spendable_transparent_outputs_for_addresses( &self, addresses: &[TransparentAddress], target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, output_filter: CoinbaseFilter, lock_filter: LockFilter<'_>, ) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
transparent-inputs only.addresses, subject to the same spendability conditions as
InputSource::get_spendable_transparent_outputs. Read moreSource§fn select_spendable_transparent_outputs(
&self,
account: Self::AccountId,
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
output_filter: CoinbaseFilter,
address_allow_list: Option<&[TransparentAddress]>,
target_value: TargetValue,
max_inputs: usize,
fee_rule: &StandardFeeRule,
lock_filter: LockFilter<'_>,
) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
fn select_spendable_transparent_outputs( &self, account: Self::AccountId, target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, output_filter: CoinbaseFilter, address_allow_list: Option<&[TransparentAddress]>, target_value: TargetValue, max_inputs: usize, fee_rule: &StandardFeeRule, lock_filter: LockFilter<'_>, ) -> Result<Vec<WalletTransparentOutput<Self::AccountId>>, Self::Error>
transparent-inputs only.account whose total post-fee
value (sum of values minus the cumulative marginal fee cost of the gathered inputs
themselves, per fee_rule) is at least target_value, or max_inputs outputs
(whichever is reached first). Read moreSource§impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> LowLevelWalletRead for WalletDb<C, P, CL, R>
impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> LowLevelWalletRead for WalletDb<C, P, CL, R>
Source§type AccountId = AccountUuid
type AccountId = AccountUuid
Source§type AccountRef = AccountRef
type AccountRef = AccountRef
Source§type Account = Account
type Account = Account
Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§fn block_fully_scanned_height(&self) -> Result<Option<BlockHeight>, Self::Error>
fn block_fully_scanned_height(&self) -> Result<Option<BlockHeight>, Self::Error>
Ok(None) if no such height exists.Source§fn select_receiving_address(
&self,
account: Self::AccountId,
receiver: &Receiver,
) -> Result<Option<ZcashAddress>, Self::Error>
fn select_receiving_address( &self, account: Self::AccountId, receiver: &Receiver, ) -> Result<Option<ZcashAddress>, Self::Error>
Source§fn find_involved_accounts(
&self,
tx_refs: impl IntoIterator<Item = Self::TxRef>,
) -> Result<HashSet<(Self::AccountId, Option<TransparentKeyScope>)>, Self::Error>
fn find_involved_accounts( &self, tx_refs: impl IntoIterator<Item = Self::TxRef>, ) -> Result<HashSet<(Self::AccountId, Option<TransparentKeyScope>)>, Self::Error>
transparent-inputs only.Source§fn find_account_for_transparent_address(
&self,
address: &TransparentAddress,
) -> Result<Option<(Self::AccountId, Option<TransparentKeyScope>)>, Self::Error>
fn find_account_for_transparent_address( &self, address: &TransparentAddress, ) -> Result<Option<(Self::AccountId, Option<TransparentKeyScope>)>, Self::Error>
transparent-inputs only.Source§fn detect_accounts_transparent<'t>(
&self,
spends: impl Iterator<Item = &'t OutPoint>,
) -> Result<HashSet<Self::AccountId>, Self::Error>
fn detect_accounts_transparent<'t>( &self, spends: impl Iterator<Item = &'t OutPoint>, ) -> Result<HashSet<Self::AccountId>, Self::Error>
transparent-inputs only.OutPoints. This is used to determine which account(s) funded a given transaction.Source§fn detect_accounts_sapling<'t>(
&self,
spends: impl Iterator<Item = &'t Nullifier>,
) -> Result<HashSet<Self::AccountId>, Self::Error>
fn detect_accounts_sapling<'t>( &self, spends: impl Iterator<Item = &'t Nullifier>, ) -> Result<HashSet<Self::AccountId>, Self::Error>
Nullifiers. This is used to determine which account(s) funded a given
transaction.Source§fn get_wallet_transparent_output(
&self,
outpoint: &OutPoint,
target_height: Option<TargetHeight>,
) -> Result<Option<WalletTransparentOutput<Self::AccountId>>, Self::Error>
fn get_wallet_transparent_output( &self, outpoint: &OutPoint, target_height: Option<TargetHeight>, ) -> Result<Option<WalletTransparentOutput<Self::AccountId>>, Self::Error>
transparent-inputs only.Source§fn get_txs_spending_transparent_outputs_of(
&self,
tx_ref: Self::TxRef,
) -> Result<Vec<(Self::TxRef, Transaction)>, Self::Error>
fn get_txs_spending_transparent_outputs_of( &self, tx_ref: Self::TxRef, ) -> Result<Vec<(Self::TxRef, Transaction)>, Self::Error>
Source§fn detect_sapling_spend(
&self,
nf: &Nullifier,
) -> Result<Option<Self::TxRef>, Self::Error>
fn detect_sapling_spend( &self, nf: &Nullifier, ) -> Result<Option<Self::TxRef>, Self::Error>
Source§fn get_account_ref(
&self,
account_uuid: Self::AccountId,
) -> Result<Self::AccountRef, Self::Error>
fn get_account_ref( &self, account_uuid: Self::AccountId, ) -> Result<Self::AccountRef, Self::Error>
transparent-inputs only.Source§fn get_account_internal(
&self,
account_id: Self::AccountRef,
) -> Result<Option<Account>, SqliteClientError>
fn get_account_internal( &self, account_id: Self::AccountRef, ) -> Result<Option<Account>, SqliteClientError>
transparent-inputs only.Source§impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> LowLevelWalletWrite for WalletDb<C, P, CL, R>
impl<'a, C: Borrow<Transaction<'a>>, P: Parameters, CL: Clock, R: RngCore> LowLevelWalletWrite for WalletDb<C, P, CL, R>
Source§fn put_block_meta(
&mut self,
block_height: BlockHeight,
block_hash: BlockHash,
block_time: u32,
sapling_commitment_tree_size: u32,
sapling_output_count: u32,
) -> Result<(), Self::Error>
fn put_block_meta( &mut self, block_height: BlockHeight, block_hash: BlockHash, block_time: u32, sapling_commitment_tree_size: u32, sapling_output_count: u32, ) -> Result<(), Self::Error>
Source§fn put_tx_meta(
&mut self,
tx: &WalletTx<Self::AccountId>,
height: BlockHeight,
) -> Result<Self::TxRef, Self::Error>
fn put_tx_meta( &mut self, tx: &WalletTx<Self::AccountId>, height: BlockHeight, ) -> Result<Self::TxRef, Self::Error>
Source§fn put_tx_data(
&mut self,
tx: &Transaction,
fee: Option<Zatoshis>,
created_at: Option<OffsetDateTime>,
target_height: Option<TargetHeight>,
observed_height: BlockHeight,
) -> Result<Self::TxRef, Self::Error>
fn put_tx_data( &mut self, tx: &Transaction, fee: Option<Zatoshis>, created_at: Option<OffsetDateTime>, target_height: Option<TargetHeight>, observed_height: BlockHeight, ) -> Result<Self::TxRef, Self::Error>
Source§fn set_transaction_status(
&mut self,
txid: TxId,
status: TransactionStatus,
) -> Result<(), Self::Error>
fn set_transaction_status( &mut self, txid: TxId, status: TransactionStatus, ) -> Result<(), Self::Error>
Source§fn put_zip318_classification(
&mut self,
tx_ref: Self::TxRef,
classification: Zip318Classification,
) -> Result<(), Self::Error>
fn put_zip318_classification( &mut self, tx_ref: Self::TxRef, classification: Zip318Classification, ) -> Result<(), Self::Error>
Source§fn put_received_sapling_note<T: ReceivedSaplingOutput<AccountId = Self::AccountId>>(
&mut self,
output: &T,
tx_ref: Self::TxRef,
target_or_mined_height: Option<BlockHeight>,
spent_in: Option<Self::TxRef>,
) -> Result<(), Self::Error>
fn put_received_sapling_note<T: ReceivedSaplingOutput<AccountId = Self::AccountId>>( &mut self, output: &T, tx_ref: Self::TxRef, target_or_mined_height: Option<BlockHeight>, spent_in: Option<Self::TxRef>, ) -> Result<(), Self::Error>
Source§fn mark_sapling_note_spent(
&mut self,
nf: &Nullifier,
tx_ref: Self::TxRef,
) -> Result<bool, Self::Error>
fn mark_sapling_note_spent( &mut self, nf: &Nullifier, tx_ref: Self::TxRef, ) -> Result<bool, Self::Error>
spent_in_tx. This may result in multiple distinct
transactions being recorded as having spent the note; only one of these transactions will
end up having been mined (by consensus). If an attempt is made to associate a nullifier
with a mined transaction, and another mined transaction reveals the same nullifier,
implementations of this method must return an error. Read moreSource§fn track_block_sapling_nullifiers(
&mut self,
block_height: BlockHeight,
nfs: &[(TxIndex, TxId, Vec<Nullifier>)],
) -> Result<(), Self::Error>
fn track_block_sapling_nullifiers( &mut self, block_height: BlockHeight, nfs: &[(TxIndex, TxId, Vec<Nullifier>)], ) -> Result<(), Self::Error>
Source§fn prune_tracked_nullifiers(
&mut self,
pruning_depth: u32,
) -> Result<(), Self::Error>
fn prune_tracked_nullifiers( &mut self, pruning_depth: u32, ) -> Result<(), Self::Error>
Source§fn put_sent_output(
&mut self,
from_account_uuid: Self::AccountId,
tx_ref: Self::TxRef,
output_index: usize,
recipient: &Recipient<Self::AccountId>,
value: Zatoshis,
memo: Option<&MemoBytes>,
) -> Result<(), Self::Error>
fn put_sent_output( &mut self, from_account_uuid: Self::AccountId, tx_ref: Self::TxRef, output_index: usize, recipient: &Recipient<Self::AccountId>, value: Zatoshis, memo: Option<&MemoBytes>, ) -> Result<(), Self::Error>
Source§fn update_tx_fee(
&mut self,
tx_ref: Self::TxRef,
fee: Zatoshis,
) -> Result<(), Self::Error>
fn update_tx_fee( &mut self, tx_ref: Self::TxRef, fee: Zatoshis, ) -> Result<(), Self::Error>
Source§fn put_transparent_output(
&mut self,
output: &WalletTransparentOutput<Self::AccountId>,
observation_height: BlockHeight,
known_unspent: bool,
) -> Result<(Self::AccountId, Option<TransparentKeyScope>), Self::Error>
fn put_transparent_output( &mut self, output: &WalletTransparentOutput<Self::AccountId>, observation_height: BlockHeight, known_unspent: bool, ) -> Result<(Self::AccountId, Option<TransparentKeyScope>), Self::Error>
transparent-inputs only.Source§fn mark_transparent_utxo_spent(
&mut self,
outpoint: &OutPoint,
spent_in_tx: Self::TxRef,
) -> Result<bool, Self::Error>
fn mark_transparent_utxo_spent( &mut self, outpoint: &OutPoint, spent_in_tx: Self::TxRef, ) -> Result<bool, Self::Error>
transparent-inputs only.outpoint is spent
in the transaction referenced by spent_in_tx.Source§fn generate_transparent_gap_addresses(
&mut self,
account_id: Self::AccountId,
key_scope: TransparentKeyScope,
request: UnifiedAddressRequest,
) -> Result<(), Self::Error>
fn generate_transparent_gap_addresses( &mut self, account_id: Self::AccountId, key_scope: TransparentKeyScope, request: UnifiedAddressRequest, ) -> Result<(), Self::Error>
transparent-inputs only.Source§fn queue_transparent_spend_detection(
&mut self,
receiving_address: TransparentAddress,
tx_ref: Self::TxRef,
output_index: u32,
) -> Result<(), Self::Error>
fn queue_transparent_spend_detection( &mut self, receiving_address: TransparentAddress, tx_ref: Self::TxRef, output_index: u32, ) -> Result<(), Self::Error>
transparent-inputs only.TransactionDataRequest::TransactionsInvolvingAddress request to the transaction
data request queue. When the transparent output of tx_ref at output index output_index
(which must have been received at receiving_address) is detected as having been spent,
this request will be considered fulfilled. Read moreSource§fn queue_transparent_input_retrieval(
&mut self,
tx_ref: Self::TxRef,
d_tx: &DecryptedTransaction<'_, Transaction, Self::AccountId>,
) -> Result<(), Self::Error>
fn queue_transparent_input_retrieval( &mut self, tx_ref: Self::TxRef, d_tx: &DecryptedTransaction<'_, Transaction, Self::AccountId>, ) -> Result<(), Self::Error>
transparent-inputs only.TransactionDataRequest::Enhancement requests for transactions that generated the
transparent inputs to the provided DecryptedTransaction to the transaction data request
queue.Source§fn queue_tx_retrieval(
&mut self,
txids: impl Iterator<Item = TxId>,
dependent_tx_ref: Option<Self::TxRef>,
) -> Result<(), Self::Error>
fn queue_tx_retrieval( &mut self, txids: impl Iterator<Item = TxId>, dependent_tx_ref: Option<Self::TxRef>, ) -> Result<(), Self::Error>
TransactionDataRequest::Enhancement request for the enhancement of the given
transaction to the transaction data request queue. The dependent_tx_ref parameter
specifies the transaction that caused this request to be generated, likely as part of the
process of traversing the transparent transaction graph by inspecting the inputs of a
transaction with outputs that were received by the wallet.Source§fn queue_tx_status(&mut self, txid: TxId) -> Result<(), Self::Error>
fn queue_tx_status(&mut self, txid: TxId) -> Result<(), Self::Error>
TransactionDataRequest::GetStatus request for a transaction whose mined status
cannot be learned through ordinary compact-block scanning. Read moreSource§fn delete_retrieval_queue_entries(
&mut self,
txid: TxId,
) -> Result<(), Self::Error>
fn delete_retrieval_queue_entries( &mut self, txid: TxId, ) -> Result<(), Self::Error>
TransactionDataRequest::Enhancement request for the given transaction ID
from the transaction data request queue, without removing any durable status-observation
intent for the transaction.Source§fn notify_scan_complete(
&mut self,
range: Range<BlockHeight>,
wallet_note_positions: &[(ShieldedPool, Position)],
) -> Result<(), Self::Error>
fn notify_scan_complete( &mut self, range: Range<BlockHeight>, wallet_note_positions: &[(ShieldedPool, Position)], ) -> Result<(), Self::Error>
Source§fn update_gap_limits(
&mut self,
gap_limits: &GapLimits,
txid: TxId,
observation_height: BlockHeight,
) -> Result<(), Self::Error>
fn update_gap_limits( &mut self, gap_limits: &GapLimits, txid: TxId, observation_height: BlockHeight, ) -> Result<(), Self::Error>
transparent-inputs only.Source§impl<C, P, CL, R> OutputLockStore for WalletDb<C, P, CL, R>
impl<C, P, CL, R> OutputLockStore for WalletDb<C, P, CL, R>
Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§type AccountId = AccountUuid
type AccountId = AccountUuid
Source§fn lock_outputs(
&mut self,
outputs: &[OutputRef],
owner: LockOwner,
lock_expiry_height: BlockHeight,
) -> Result<usize, LockError<Self::Error>>
fn lock_outputs( &mut self, outputs: &[OutputRef], owner: LockOwner, lock_expiry_height: BlockHeight, ) -> Result<usize, LockError<Self::Error>>
owner so that, by default, they are not
selected for spending at any height less than or equal to the given height. Read moreSource§fn unlock_output(
&mut self,
output: &OutputRef,
owner: LockOwner,
) -> Result<bool, Self::Error>
fn unlock_output( &mut self, output: &OutputRef, owner: LockOwner, ) -> Result<bool, Self::Error>
owner, making it once again
available for spending and balance computations. Read moreSource§impl<P, CL, R> OutputLockStore for WalletDb<SqlTransaction<'_>, P, CL, R>
This impl block is only usable when you already have an SqlTransaction, meaning
you are inside a WalletDb::transactionally block with a lock on the database.
impl<P, CL, R> OutputLockStore for WalletDb<SqlTransaction<'_>, P, CL, R>
This impl block is only usable when you already have an SqlTransaction, meaning
you are inside a WalletDb::transactionally block with a lock on the database.
Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§type AccountId = AccountUuid
type AccountId = AccountUuid
Source§fn lock_outputs(
&mut self,
outputs: &[OutputRef],
owner: LockOwner,
lock_expiry_height: BlockHeight,
) -> Result<usize, LockError<Self::Error>>
fn lock_outputs( &mut self, outputs: &[OutputRef], owner: LockOwner, lock_expiry_height: BlockHeight, ) -> Result<usize, LockError<Self::Error>>
owner so that, by default, they are not
selected for spending at any height less than or equal to the given height. Read moreSource§fn unlock_output(
&mut self,
output: &OutputRef,
owner: LockOwner,
) -> Result<bool, Self::Error>
fn unlock_output( &mut self, output: &OutputRef, owner: LockOwner, ) -> Result<bool, Self::Error>
owner, making it once again
available for spending and balance computations. Read moreSource§impl<C: BorrowMut<Connection>, P: Parameters, CL, R> WalletCommitmentTrees for WalletDb<C, P, CL, R>
impl<C: BorrowMut<Connection>, P: Parameters, CL, R> WalletCommitmentTrees for WalletDb<C, P, CL, R>
type Error = Error
Source§type SaplingShardStore<'a> = SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>
type SaplingShardStore<'a> = SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>
ShardStore for the Sapling note commitment tree.Source§fn with_sapling_tree_mut<F, A, E>(&mut self, callback: F) -> Result<A, E>where
for<'a> F: FnMut(&'a mut ShardTree<SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>, { sapling::NOTE_COMMITMENT_TREE_DEPTH }, SAPLING_SHARD_HEIGHT>) -> Result<A, E>,
E: From<ShardTreeError<Self::Error>>,
fn with_sapling_tree_mut<F, A, E>(&mut self, callback: F) -> Result<A, E>where
for<'a> F: FnMut(&'a mut ShardTree<SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>, { sapling::NOTE_COMMITMENT_TREE_DEPTH }, SAPLING_SHARD_HEIGHT>) -> Result<A, E>,
E: From<ShardTreeError<Self::Error>>,
Source§fn put_sapling_subtree_roots(
&mut self,
start_index: u64,
roots: &[CommitmentTreeRoot<Node>],
) -> Result<(), ShardTreeError<Self::Error>>
fn put_sapling_subtree_roots( &mut self, start_index: u64, roots: &[CommitmentTreeRoot<Node>], ) -> Result<(), ShardTreeError<Self::Error>>
Source§fn get_sapling_subtree_root(
&mut self,
index: u64,
) -> Result<Option<Node>, ShardTreeError<Self::Error>>
fn get_sapling_subtree_root( &mut self, index: u64, ) -> Result<Option<Node>, ShardTreeError<Self::Error>>
Ok(None) if no root is recorded for that subtree. Read moreSource§fn put_sapling_shards(
&mut self,
shards: &[LocatedTree<Option<Arc<Node>>, (Node, RetentionFlags)>],
cap: Option<&Tree<Option<Arc<Node>>, (Node, RetentionFlags)>>,
checkpoints_remove: &[BlockHeight],
checkpoints_add: &[(BlockHeight, Checkpoint)],
) -> Result<(), ShardTreeError<Self::Error>>
fn put_sapling_shards( &mut self, shards: &[LocatedTree<Option<Arc<Node>>, (Node, RetentionFlags)>], cap: Option<&Tree<Option<Arc<Node>>, (Node, RetentionFlags)>>, checkpoints_remove: &[BlockHeight], checkpoints_add: &[(BlockHeight, Checkpoint)], ) -> Result<(), ShardTreeError<Self::Error>>
Source§fn remove_retained_checkpoints_below(
&mut self,
max_height: BlockHeight,
) -> Result<(), ShardTreeError<Self::Error>>
fn remove_retained_checkpoints_below( &mut self, max_height: BlockHeight, ) -> Result<(), ShardTreeError<Self::Error>>
max_height
from the wallet’s note commitment trees, allowing them to be pruned normally. Read moreSource§impl<P: Parameters, CL, R> WalletCommitmentTrees for WalletDb<SqlTransaction<'_>, P, CL, R>
impl<P: Parameters, CL, R> WalletCommitmentTrees for WalletDb<SqlTransaction<'_>, P, CL, R>
type Error = Error
Source§type SaplingShardStore<'a> = SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>
type SaplingShardStore<'a> = SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>
ShardStore for the Sapling note commitment tree.Source§fn with_sapling_tree_mut<F, A, E>(&mut self, callback: F) -> Result<A, E>where
for<'a> F: FnMut(&'a mut ShardTree<SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>, { sapling::NOTE_COMMITMENT_TREE_DEPTH }, SAPLING_SHARD_HEIGHT>) -> Result<A, E>,
E: From<ShardTreeError<Error>>,
fn with_sapling_tree_mut<F, A, E>(&mut self, callback: F) -> Result<A, E>where
for<'a> F: FnMut(&'a mut ShardTree<SqliteShardStore<&'a Transaction<'a>, Node, SAPLING_SHARD_HEIGHT>, { sapling::NOTE_COMMITMENT_TREE_DEPTH }, SAPLING_SHARD_HEIGHT>) -> Result<A, E>,
E: From<ShardTreeError<Error>>,
Source§fn put_sapling_subtree_roots(
&mut self,
start_index: u64,
roots: &[CommitmentTreeRoot<Node>],
) -> Result<(), ShardTreeError<Self::Error>>
fn put_sapling_subtree_roots( &mut self, start_index: u64, roots: &[CommitmentTreeRoot<Node>], ) -> Result<(), ShardTreeError<Self::Error>>
Source§fn get_sapling_subtree_root(
&mut self,
index: u64,
) -> Result<Option<Node>, ShardTreeError<Self::Error>>
fn get_sapling_subtree_root( &mut self, index: u64, ) -> Result<Option<Node>, ShardTreeError<Self::Error>>
Ok(None) if no root is recorded for that subtree. Read moreSource§fn put_sapling_shards(
&mut self,
shards: &[LocatedTree<Option<Arc<Node>>, (Node, RetentionFlags)>],
cap: Option<&Tree<Option<Arc<Node>>, (Node, RetentionFlags)>>,
checkpoints_remove: &[BlockHeight],
checkpoints_add: &[(BlockHeight, Checkpoint)],
) -> Result<(), ShardTreeError<Self::Error>>
fn put_sapling_shards( &mut self, shards: &[LocatedTree<Option<Arc<Node>>, (Node, RetentionFlags)>], cap: Option<&Tree<Option<Arc<Node>>, (Node, RetentionFlags)>>, checkpoints_remove: &[BlockHeight], checkpoints_add: &[(BlockHeight, Checkpoint)], ) -> Result<(), ShardTreeError<Self::Error>>
Source§fn remove_retained_checkpoints_below(
&mut self,
max_height: BlockHeight,
) -> Result<(), ShardTreeError<Self::Error>>
fn remove_retained_checkpoints_below( &mut self, max_height: BlockHeight, ) -> Result<(), ShardTreeError<Self::Error>>
max_height
from the wallet’s note commitment trees, allowing them to be pruned normally. Read moreSource§impl<C: Borrow<Connection>, P: Parameters, CL, R> WalletRead for WalletDb<C, P, CL, R>
impl<C: Borrow<Connection>, P: Parameters, CL, R> WalletRead for WalletDb<C, P, CL, R>
Source§fn find_account_for_address<Q: Parameters>(
&self,
params: &Q,
address: &Address,
) -> Result<Option<Self::AccountId>, FindAccountForAddressError<Self::Error>>
fn find_account_for_address<Q: Parameters>( &self, params: &Q, address: &Address, ) -> Result<Option<Self::AccountId>, FindAccountForAddressError<Self::Error>>
Implements this method with a single SQL query, avoiding the O(accounts × addresses)
scan that delegating to
zcash_client_backend::data_api::defaults::find_account_for_address would require.
See zcash_client_backend::data_api::WalletRead::find_account_for_address for the
semantics.
Source§type Error = SqliteClientError
type Error = SqliteClientError
Source§type AccountId = AccountUuid
type AccountId = AccountUuid
Source§fn get_account_ids(&self) -> Result<Vec<Self::AccountId>, Self::Error>
fn get_account_ids(&self) -> Result<Vec<Self::AccountId>, Self::Error>
Source§fn get_account(
&self,
account_id: Self::AccountId,
) -> Result<Option<Self::Account>, Self::Error>
fn get_account( &self, account_id: Self::AccountId, ) -> Result<Option<Self::Account>, Self::Error>
Source§fn get_derived_account(
&self,
derivation: &Zip32Derivation,
) -> Result<Option<Self::Account>, Self::Error>
fn get_derived_account( &self, derivation: &Zip32Derivation, ) -> Result<Option<Self::Account>, Self::Error>
SeedFingerprint and
zip32::AccountId, if any.Source§fn validate_seed(
&self,
account_id: Self::AccountId,
seed: &SecretVec<u8>,
) -> Result<bool, Self::Error>
fn validate_seed( &self, account_id: Self::AccountId, seed: &SecretVec<u8>, ) -> Result<bool, Self::Error>
Source§fn seed_relevance_to_derived_accounts(
&self,
seed: &SecretVec<u8>,
) -> Result<SeedRelevance<Self::AccountId>, Self::Error>
fn seed_relevance_to_derived_accounts( &self, seed: &SecretVec<u8>, ) -> Result<SeedRelevance<Self::AccountId>, Self::Error>
Account::source is AccountSource::Derived) in the wallet. Read moreSource§fn get_account_for_ufvk(
&self,
ufvk: &UnifiedFullViewingKey,
) -> Result<Option<Self::Account>, Self::Error>
fn get_account_for_ufvk( &self, ufvk: &UnifiedFullViewingKey, ) -> Result<Option<Self::Account>, Self::Error>
UnifiedFullViewingKey, if any.Source§fn list_addresses(
&self,
account: Self::AccountId,
) -> Result<Vec<AddressInfo>, Self::Error>
fn list_addresses( &self, account: Self::AccountId, ) -> Result<Vec<AddressInfo>, Self::Error>
Source§fn get_last_generated_address_matching(
&self,
account: Self::AccountId,
request: UnifiedAddressRequest,
) -> Result<Option<UnifiedAddress>, Self::Error>
fn get_last_generated_address_matching( &self, account: Self::AccountId, request: UnifiedAddressRequest, ) -> Result<Option<UnifiedAddress>, Self::Error>
Source§fn get_account_birthday(
&self,
account: Self::AccountId,
) -> Result<BlockHeight, Self::Error>
fn get_account_birthday( &self, account: Self::AccountId, ) -> Result<BlockHeight, Self::Error>
Source§fn get_wallet_birthday(&self) -> Result<Option<BlockHeight>, Self::Error>
fn get_wallet_birthday(&self) -> Result<Option<BlockHeight>, Self::Error>
Source§fn get_wallet_recover_until(&self) -> Result<Option<BlockHeight>, Self::Error>
fn get_wallet_recover_until(&self) -> Result<Option<BlockHeight>, Self::Error>
Source§fn get_wallet_summary(
&self,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Option<WalletSummary<Self::AccountId>>, Self::Error>
fn get_wallet_summary( &self, confirmations_policy: ConfirmationsPolicy, ) -> Result<Option<WalletSummary<Self::AccountId>>, Self::Error>
WalletSummary that represents the sync status and the wallet balances as of
the chain tip given the specified confirmation policy for all accounts known to the wallet,
or Ok(None) if the wallet has no summary data available.Source§fn chain_height(&self) -> Result<Option<BlockHeight>, Self::Error>
fn chain_height(&self) -> Result<Option<BlockHeight>, Self::Error>
WalletWrite::update_chain_tip. Read moreSource§fn anchor_retention_interval(&self) -> AnchorRetentionInterval
fn anchor_retention_interval(&self) -> AnchorRetentionInterval
Source§fn get_block_hash(
&self,
block_height: BlockHeight,
) -> Result<Option<BlockHash>, Self::Error>
fn get_block_hash( &self, block_height: BlockHeight, ) -> Result<Option<BlockHash>, Self::Error>
Ok(None) if the hash
is not found in the database.Source§fn block_metadata(
&self,
height: BlockHeight,
) -> Result<Option<BlockMetadata>, Self::Error>
fn block_metadata( &self, height: BlockHeight, ) -> Result<Option<BlockMetadata>, Self::Error>
Source§fn block_fully_scanned(&self) -> Result<Option<BlockMetadata>, Self::Error>
fn block_fully_scanned(&self) -> Result<Option<BlockMetadata>, Self::Error>
Source§fn get_max_height_hash(
&self,
) -> Result<Option<(BlockHeight, BlockHash)>, Self::Error>
fn get_max_height_hash( &self, ) -> Result<Option<(BlockHeight, BlockHash)>, Self::Error>
Source§fn block_max_scanned(&self) -> Result<Option<BlockMetadata>, Self::Error>
fn block_max_scanned(&self) -> Result<Option<BlockMetadata>, Self::Error>
Source§fn suggest_scan_ranges(&self) -> Result<Vec<ScanRange>, Self::Error>
fn suggest_scan_ranges(&self) -> Result<Vec<ScanRange>, Self::Error>
Source§fn get_target_and_anchor_heights(
&self,
min_confirmations: NonZeroU32,
) -> Result<Option<(TargetHeight, BlockHeight)>, Self::Error>
fn get_target_and_anchor_heights( &self, min_confirmations: NonZeroU32, ) -> Result<Option<(TargetHeight, BlockHeight)>, Self::Error>
Source§fn get_tx_height(&self, txid: TxId) -> Result<Option<BlockHeight>, Self::Error>
fn get_tx_height(&self, txid: TxId) -> Result<Option<BlockHeight>, Self::Error>
Ok(None) if the
transaction is not known to the wallet or not in the main chain.Source§fn get_unified_full_viewing_keys(
&self,
) -> Result<HashMap<Self::AccountId, UnifiedFullViewingKey>, Self::Error>
fn get_unified_full_viewing_keys( &self, ) -> Result<HashMap<Self::AccountId, UnifiedFullViewingKey>, Self::Error>
Source§fn get_memo(&self, note_id: NoteId) -> Result<Option<Memo>, Self::Error>
fn get_memo(&self, note_id: NoteId) -> Result<Option<Memo>, Self::Error>
Source§fn get_transaction(
&self,
txid: TxId,
) -> Result<Option<Transaction>, Self::Error>
fn get_transaction( &self, txid: TxId, ) -> Result<Option<Transaction>, Self::Error>
Source§fn get_sapling_nullifiers(
&self,
query: NullifierQuery,
) -> Result<Vec<(Self::AccountId, Nullifier)>, Self::Error>
fn get_sapling_nullifiers( &self, query: NullifierQuery, ) -> Result<Vec<(Self::AccountId, Nullifier)>, Self::Error>
Source§fn get_transparent_receivers(
&self,
account: Self::AccountId,
include_change: bool,
include_standalone: bool,
) -> Result<HashMap<TransparentAddress, TransparentAddressMetadata>, Self::Error>
fn get_transparent_receivers( &self, account: Self::AccountId, include_change: bool, include_standalone: bool, ) -> Result<HashMap<TransparentAddress, TransparentAddressMetadata>, Self::Error>
transparent-inputs only.Source§fn get_ephemeral_transparent_receivers(
&self,
account: Self::AccountId,
exposure_depth: u32,
exclude_used: bool,
) -> Result<HashMap<TransparentAddress, TransparentAddressMetadata>, Self::Error>
fn get_ephemeral_transparent_receivers( &self, account: Self::AccountId, exposure_depth: u32, exclude_used: bool, ) -> Result<HashMap<TransparentAddress, TransparentAddressMetadata>, Self::Error>
transparent-inputs only.Source§fn get_transparent_balances(
&self,
account: Self::AccountId,
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
) -> Result<TransparentBalances, Self::Error>
fn get_transparent_balances( &self, account: Self::AccountId, target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, ) -> Result<TransparentBalances, Self::Error>
transparent-inputs only.Source§fn get_transparent_address_metadata(
&self,
account: Self::AccountId,
address: &TransparentAddress,
) -> Result<Option<TransparentAddressMetadata>, Self::Error>
fn get_transparent_address_metadata( &self, account: Self::AccountId, address: &TransparentAddress, ) -> Result<Option<TransparentAddressMetadata>, Self::Error>
transparent-inputs only.Source§fn utxo_query_height(
&self,
account: Self::AccountId,
) -> Result<BlockHeight, Self::Error>
fn utxo_query_height( &self, account: Self::AccountId, ) -> Result<BlockHeight, Self::Error>
transparent-inputs only.Source§fn transaction_data_requests(
&self,
) -> Result<Vec<TransactionDataRequest>, Self::Error>
fn transaction_data_requests( &self, ) -> Result<Vec<TransactionDataRequest>, Self::Error>
TransactionDataRequest values that describe information needed by
the wallet to complete its view of transaction history. Read moreSource§fn get_received_outputs(
&self,
txid: TxId,
target_height: TargetHeight,
confirmations_policy: ConfirmationsPolicy,
) -> Result<Vec<ReceivedTransactionOutput>, Self::Error>
fn get_received_outputs( &self, txid: TxId, target_height: TargetHeight, confirmations_policy: ConfirmationsPolicy, ) -> Result<Vec<ReceivedTransactionOutput>, Self::Error>
ReceivedTransactionOutput values describing the outputs of the
specified transaction that were received by the wallet. The number of confirmations until
each received output will be considered spendable is determined based upon the specified
target height and confirmations policy.Source§fn pool_migration_params(&self) -> PoolMigrationParams
fn pool_migration_params(&self) -> PoolMigrationParams
Self::anchor_retention_interval. Read moreSource§impl<C: Borrow<Connection>, P: Parameters, CL, R> WalletTest for WalletDb<C, P, CL, R>
Available on crate features test-dependencies only.
impl<C: Borrow<Connection>, P: Parameters, CL, R> WalletTest for WalletDb<C, P, CL, R>
test-dependencies only.Source§fn get_tx_history(
&self,
) -> Result<Vec<TransactionSummary<<Self as WalletRead>::AccountId>>, <Self as WalletRead>::Error>
fn get_tx_history( &self, ) -> Result<Vec<TransactionSummary<<Self as WalletRead>::AccountId>>, <Self as WalletRead>::Error>
Source§fn get_sent_note_ids(
&self,
txid: &TxId,
protocol: ShieldedPool,
) -> Result<Vec<NoteId>, <Self as WalletRead>::Error>
fn get_sent_note_ids( &self, txid: &TxId, protocol: ShieldedPool, ) -> Result<Vec<NoteId>, <Self as WalletRead>::Error>
Source§fn get_sent_outputs(
&self,
txid: &TxId,
) -> Result<Vec<OutputOfSentTx>, <Self as WalletRead>::Error>
fn get_sent_outputs( &self, txid: &TxId, ) -> Result<Vec<OutputOfSentTx>, <Self as WalletRead>::Error>
fn get_checkpoint_history( &self, protocol: &ShieldedPool, ) -> Result<Vec<(BlockHeight, Option<Position>)>, <Self as WalletRead>::Error>
Source§fn get_transparent_output(
&self,
outpoint: &OutPoint,
target_height: Option<TargetHeight>,
) -> Result<Option<WalletTransparentOutput<<Self as InputSource>::AccountId>>, <Self as InputSource>::Error>
fn get_transparent_output( &self, outpoint: &OutPoint, target_height: Option<TargetHeight>, ) -> Result<Option<WalletTransparentOutput<<Self as InputSource>::AccountId>>, <Self as InputSource>::Error>
transparent-inputs only.outpoint.
Allows selecting unspendable outputs for testing purposes. Read moreSource§fn get_notes(
&self,
protocol: ShieldedPool,
) -> Result<Vec<ReceivedNote<Self::NoteRef, Note>>, <Self as InputSource>::Error>
fn get_notes( &self, protocol: ShieldedPool, ) -> Result<Vec<ReceivedNote<Self::NoteRef, Note>>, <Self as InputSource>::Error>
Source§fn get_known_ephemeral_addresses(
&self,
account: <Self as WalletRead>::AccountId,
index_range: Option<Range<NonHardenedChildIndex>>,
) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
fn get_known_ephemeral_addresses( &self, account: <Self as WalletRead>::AccountId, index_range: Option<Range<NonHardenedChildIndex>>, ) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
transparent-inputs only.Source§fn find_account_for_ephemeral_address(
&self,
address: &TransparentAddress,
) -> Result<Option<<Self as WalletRead>::AccountId>, <Self as WalletRead>::Error>
fn find_account_for_ephemeral_address( &self, address: &TransparentAddress, ) -> Result<Option<<Self as WalletRead>::AccountId>, <Self as WalletRead>::Error>
transparent-inputs only.get_known_ephemeral_addresses(account_id, None) for any of the
wallet’s accounts, then return Ok(Some(account_id)). Otherwise return Ok(None). Read moreSource§impl<C: BorrowMut<Connection>, P: Parameters, CL: Clock, R: RngCore> WalletWrite for WalletDb<C, P, CL, R>
impl<C: BorrowMut<Connection>, P: Parameters, CL: Clock, R: RngCore> WalletWrite for WalletDb<C, P, CL, R>
Source§fn create_account(
&mut self,
account_name: &str,
seed: &SecretVec<u8>,
birthday: &AccountBirthday,
key_source: Option<&str>,
) -> Result<(<Self as WalletRead>::AccountId, UnifiedSpendingKey), <Self as WalletRead>::Error>
fn create_account( &mut self, account_name: &str, seed: &SecretVec<u8>, birthday: &AccountBirthday, key_source: Option<&str>, ) -> Result<(<Self as WalletRead>::AccountId, UnifiedSpendingKey), <Self as WalletRead>::Error>
Source§fn import_account_hd(
&mut self,
account_name: &str,
seed: &SecretVec<u8>,
account_index: AccountId,
birthday: &AccountBirthday,
key_source: Option<&str>,
) -> Result<(Self::Account, UnifiedSpendingKey), <Self as WalletRead>::Error>
fn import_account_hd( &mut self, account_name: &str, seed: &SecretVec<u8>, account_index: AccountId, birthday: &AccountBirthday, key_source: Option<&str>, ) -> Result<(Self::Account, UnifiedSpendingKey), <Self as WalletRead>::Error>
Source§fn import_account_ufvk(
&mut self,
account_name: &str,
ufvk: &UnifiedFullViewingKey,
birthday: &AccountBirthday,
purpose: AccountPurpose,
key_source: Option<&str>,
) -> Result<Self::Account, <Self as WalletRead>::Error>
fn import_account_ufvk( &mut self, account_name: &str, ufvk: &UnifiedFullViewingKey, birthday: &AccountBirthday, purpose: AccountPurpose, key_source: Option<&str>, ) -> Result<Self::Account, <Self as WalletRead>::Error>
Source§fn delete_account(
&mut self,
account_uuid: <Self as WalletRead>::AccountId,
) -> Result<(), <Self as WalletRead>::Error>
fn delete_account( &mut self, account_uuid: <Self as WalletRead>::AccountId, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn get_next_available_address(
&mut self,
account_uuid: <Self as WalletRead>::AccountId,
request: UnifiedAddressRequest,
) -> Result<Option<(UnifiedAddress, DiversifierIndex)>, <Self as WalletRead>::Error>
fn get_next_available_address( &mut self, account_uuid: <Self as WalletRead>::AccountId, request: UnifiedAddressRequest, ) -> Result<Option<(UnifiedAddress, DiversifierIndex)>, <Self as WalletRead>::Error>
Source§fn get_address_for_index(
&mut self,
account: <Self as WalletRead>::AccountId,
diversifier_index: DiversifierIndex,
request: UnifiedAddressRequest,
) -> Result<Option<UnifiedAddress>, <Self as WalletRead>::Error>
fn get_address_for_index( &mut self, account: <Self as WalletRead>::AccountId, diversifier_index: DiversifierIndex, request: UnifiedAddressRequest, ) -> Result<Option<UnifiedAddress>, <Self as WalletRead>::Error>
Source§fn update_chain_tip(
&mut self,
tip_height: BlockHeight,
) -> Result<(), <Self as WalletRead>::Error>
fn update_chain_tip( &mut self, tip_height: BlockHeight, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn prune_scan_queue_below(
&mut self,
height: BlockHeight,
retain_with_priority: Option<ScanPriority>,
) -> Result<u64, <Self as WalletRead>::Error>
fn prune_scan_queue_below( &mut self, height: BlockHeight, retain_with_priority: Option<ScanPriority>, ) -> Result<u64, <Self as WalletRead>::Error>
height, except where retained by
retain_with_priority. Returns the number of queue entries removed or altered. Read moreSource§fn put_blocks(
&mut self,
from_state: &ChainState,
blocks: Vec<ScannedBlock<<Self as WalletRead>::AccountId>>,
) -> Result<(), <Self as WalletRead>::Error>
fn put_blocks( &mut self, from_state: &ChainState, blocks: Vec<ScannedBlock<<Self as WalletRead>::AccountId>>, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn put_received_transparent_utxo(
&mut self,
_output: &WalletTransparentOutput<<Self as WalletRead>::AccountId>,
) -> Result<Self::UtxoRef, <Self as WalletRead>::Error>
fn put_received_transparent_utxo( &mut self, _output: &WalletTransparentOutput<<Self as WalletRead>::AccountId>, ) -> Result<Self::UtxoRef, <Self as WalletRead>::Error>
Source§fn store_decrypted_tx(
&mut self,
d_tx: DecryptedTransaction<'_, Transaction, <Self as WalletRead>::AccountId>,
) -> Result<(), <Self as WalletRead>::Error>
fn store_decrypted_tx( &mut self, d_tx: DecryptedTransaction<'_, Transaction, <Self as WalletRead>::AccountId>, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn set_tx_trust(
&mut self,
txid: TxId,
trusted: bool,
) -> Result<(), <Self as WalletRead>::Error>
fn set_tx_trust( &mut self, txid: TxId, trusted: bool, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn store_transactions_to_be_sent(
&mut self,
transactions: &[SentTransaction<'_, <Self as WalletRead>::AccountId>],
) -> Result<(), <Self as WalletRead>::Error>
fn store_transactions_to_be_sent( &mut self, transactions: &[SentTransaction<'_, <Self as WalletRead>::AccountId>], ) -> Result<(), <Self as WalletRead>::Error>
Source§fn truncate_to_height(
&mut self,
max_height: BlockHeight,
) -> Result<BlockHeight, <Self as WalletRead>::Error>
fn truncate_to_height( &mut self, max_height: BlockHeight, ) -> Result<BlockHeight, <Self as WalletRead>::Error>
Source§fn truncate_to_chain_state(
&mut self,
chain_state: ChainState,
) -> Result<(), <Self as WalletRead>::Error>
fn truncate_to_chain_state( &mut self, chain_state: ChainState, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn rewind_to_chain_state(
&mut self,
chain_state: ChainState,
reset_account_birthdays: HashSet<<Self as WalletRead>::AccountId>,
) -> Result<(), RewindError<<Self as WalletRead>::AccountId, <Self as WalletRead>::Error>>
fn rewind_to_chain_state( &mut self, chain_state: ChainState, reset_account_birthdays: HashSet<<Self as WalletRead>::AccountId>, ) -> Result<(), RewindError<<Self as WalletRead>::AccountId, <Self as WalletRead>::Error>>
Source§fn reserve_next_n_ephemeral_addresses(
&mut self,
account_id: <Self as WalletRead>::AccountId,
n: usize,
) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
fn reserve_next_n_ephemeral_addresses( &mut self, account_id: <Self as WalletRead>::AccountId, n: usize, ) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
transparent-inputs only.n available ephemeral addresses for the given account.
This cannot be undone, so as far as possible, errors associated with transaction
construction should have been reported before calling this method. Read moreSource§fn reserve_next_n_internal_addresses(
&mut self,
account_id: <Self as WalletRead>::AccountId,
n: usize,
) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
fn reserve_next_n_internal_addresses( &mut self, account_id: <Self as WalletRead>::AccountId, n: usize, ) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
transparent-inputs only.n available internal-scope (change) transparent addresses for
the given account, as described in BIP 44 under the change path level. This
cannot be undone, so as far as possible, errors associated with transaction
construction should have been reported before calling this method. Read moreSource§fn set_transaction_status(
&mut self,
txid: TxId,
status: TransactionStatus,
) -> Result<(), <Self as WalletRead>::Error>
fn set_transaction_status( &mut self, txid: TxId, status: TransactionStatus, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn schedule_next_check(
&mut self,
address: &TransparentAddress,
offset_seconds: u32,
) -> Result<Option<SystemTime>, <Self as WalletRead>::Error>
fn schedule_next_check( &mut self, address: &TransparentAddress, offset_seconds: u32, ) -> Result<Option<SystemTime>, <Self as WalletRead>::Error>
transparent-inputs only.offset_seconds from the current system time. Read moreSource§fn mark_transparent_addresses_exposed(
&mut self,
exposures: &[(TransparentAddress, BlockHeight)],
) -> Result<(), <Self as WalletRead>::Error>
fn mark_transparent_addresses_exposed( &mut self, exposures: &[(TransparentAddress, BlockHeight)], ) -> Result<(), <Self as WalletRead>::Error>
transparent-inputs only.Source§fn notify_address_checked(
&mut self,
request: TransactionsInvolvingAddress,
as_of_height: BlockHeight,
) -> Result<(), <Self as WalletRead>::Error>
fn notify_address_checked( &mut self, request: TransactionsInvolvingAddress, as_of_height: BlockHeight, ) -> Result<(), <Self as WalletRead>::Error>
transparent-inputs only.Source§impl<P: Parameters, CL: Clock, R: RngCore> WalletWrite for WalletDb<SqlTransaction<'_>, P, CL, R>
impl<P: Parameters, CL: Clock, R: RngCore> WalletWrite for WalletDb<SqlTransaction<'_>, P, CL, R>
Source§fn create_account(
&mut self,
account_name: &str,
seed: &SecretVec<u8>,
birthday: &AccountBirthday,
key_source: Option<&str>,
) -> Result<(<Self as WalletRead>::AccountId, UnifiedSpendingKey), <Self as WalletRead>::Error>
fn create_account( &mut self, account_name: &str, seed: &SecretVec<u8>, birthday: &AccountBirthday, key_source: Option<&str>, ) -> Result<(<Self as WalletRead>::AccountId, UnifiedSpendingKey), <Self as WalletRead>::Error>
Source§fn import_account_hd(
&mut self,
account_name: &str,
seed: &SecretVec<u8>,
account_index: AccountId,
birthday: &AccountBirthday,
key_source: Option<&str>,
) -> Result<(Self::Account, UnifiedSpendingKey), <Self as WalletRead>::Error>
fn import_account_hd( &mut self, account_name: &str, seed: &SecretVec<u8>, account_index: AccountId, birthday: &AccountBirthday, key_source: Option<&str>, ) -> Result<(Self::Account, UnifiedSpendingKey), <Self as WalletRead>::Error>
Source§fn import_account_ufvk(
&mut self,
account_name: &str,
ufvk: &UnifiedFullViewingKey,
birthday: &AccountBirthday,
purpose: AccountPurpose,
key_source: Option<&str>,
) -> Result<Self::Account, <Self as WalletRead>::Error>
fn import_account_ufvk( &mut self, account_name: &str, ufvk: &UnifiedFullViewingKey, birthday: &AccountBirthday, purpose: AccountPurpose, key_source: Option<&str>, ) -> Result<Self::Account, <Self as WalletRead>::Error>
Source§fn delete_account(
&mut self,
account_uuid: <Self as WalletRead>::AccountId,
) -> Result<(), <Self as WalletRead>::Error>
fn delete_account( &mut self, account_uuid: <Self as WalletRead>::AccountId, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn get_next_available_address(
&mut self,
account_uuid: <Self as WalletRead>::AccountId,
request: UnifiedAddressRequest,
) -> Result<Option<(UnifiedAddress, DiversifierIndex)>, <Self as WalletRead>::Error>
fn get_next_available_address( &mut self, account_uuid: <Self as WalletRead>::AccountId, request: UnifiedAddressRequest, ) -> Result<Option<(UnifiedAddress, DiversifierIndex)>, <Self as WalletRead>::Error>
Source§fn get_address_for_index(
&mut self,
account: <Self as WalletRead>::AccountId,
diversifier_index: DiversifierIndex,
request: UnifiedAddressRequest,
) -> Result<Option<UnifiedAddress>, <Self as WalletRead>::Error>
fn get_address_for_index( &mut self, account: <Self as WalletRead>::AccountId, diversifier_index: DiversifierIndex, request: UnifiedAddressRequest, ) -> Result<Option<UnifiedAddress>, <Self as WalletRead>::Error>
Source§fn update_chain_tip(
&mut self,
tip_height: BlockHeight,
) -> Result<(), <Self as WalletRead>::Error>
fn update_chain_tip( &mut self, tip_height: BlockHeight, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn prune_scan_queue_below(
&mut self,
height: BlockHeight,
retain_with_priority: Option<ScanPriority>,
) -> Result<u64, <Self as WalletRead>::Error>
fn prune_scan_queue_below( &mut self, height: BlockHeight, retain_with_priority: Option<ScanPriority>, ) -> Result<u64, <Self as WalletRead>::Error>
height, except where retained by
retain_with_priority. Returns the number of queue entries removed or altered. Read moreSource§fn put_blocks(
&mut self,
from_state: &ChainState,
blocks: Vec<ScannedBlock<<Self as WalletRead>::AccountId>>,
) -> Result<(), <Self as WalletRead>::Error>
fn put_blocks( &mut self, from_state: &ChainState, blocks: Vec<ScannedBlock<<Self as WalletRead>::AccountId>>, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn put_received_transparent_utxo(
&mut self,
_output: &WalletTransparentOutput<<Self as WalletRead>::AccountId>,
) -> Result<Self::UtxoRef, <Self as WalletRead>::Error>
fn put_received_transparent_utxo( &mut self, _output: &WalletTransparentOutput<<Self as WalletRead>::AccountId>, ) -> Result<Self::UtxoRef, <Self as WalletRead>::Error>
Source§fn store_decrypted_tx(
&mut self,
d_tx: DecryptedTransaction<'_, Transaction, <Self as WalletRead>::AccountId>,
) -> Result<(), <Self as WalletRead>::Error>
fn store_decrypted_tx( &mut self, d_tx: DecryptedTransaction<'_, Transaction, <Self as WalletRead>::AccountId>, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn set_tx_trust(
&mut self,
txid: TxId,
trusted: bool,
) -> Result<(), <Self as WalletRead>::Error>
fn set_tx_trust( &mut self, txid: TxId, trusted: bool, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn store_transactions_to_be_sent(
&mut self,
transactions: &[SentTransaction<'_, <Self as WalletRead>::AccountId>],
) -> Result<(), <Self as WalletRead>::Error>
fn store_transactions_to_be_sent( &mut self, transactions: &[SentTransaction<'_, <Self as WalletRead>::AccountId>], ) -> Result<(), <Self as WalletRead>::Error>
Source§fn truncate_to_height(
&mut self,
max_height: BlockHeight,
) -> Result<BlockHeight, <Self as WalletRead>::Error>
fn truncate_to_height( &mut self, max_height: BlockHeight, ) -> Result<BlockHeight, <Self as WalletRead>::Error>
Source§fn truncate_to_chain_state(
&mut self,
chain_state: ChainState,
) -> Result<(), <Self as WalletRead>::Error>
fn truncate_to_chain_state( &mut self, chain_state: ChainState, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn rewind_to_chain_state(
&mut self,
chain_state: ChainState,
reset_account_birthdays: HashSet<<Self as WalletRead>::AccountId>,
) -> Result<(), RewindError<<Self as WalletRead>::AccountId, <Self as WalletRead>::Error>>
fn rewind_to_chain_state( &mut self, chain_state: ChainState, reset_account_birthdays: HashSet<<Self as WalletRead>::AccountId>, ) -> Result<(), RewindError<<Self as WalletRead>::AccountId, <Self as WalletRead>::Error>>
Source§fn reserve_next_n_ephemeral_addresses(
&mut self,
account_id: <Self as WalletRead>::AccountId,
n: usize,
) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
fn reserve_next_n_ephemeral_addresses( &mut self, account_id: <Self as WalletRead>::AccountId, n: usize, ) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
transparent-inputs only.n available ephemeral addresses for the given account.
This cannot be undone, so as far as possible, errors associated with transaction
construction should have been reported before calling this method. Read moreSource§fn reserve_next_n_internal_addresses(
&mut self,
account_id: <Self as WalletRead>::AccountId,
n: usize,
) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
fn reserve_next_n_internal_addresses( &mut self, account_id: <Self as WalletRead>::AccountId, n: usize, ) -> Result<Vec<(TransparentAddress, TransparentAddressMetadata)>, <Self as WalletRead>::Error>
transparent-inputs only.n available internal-scope (change) transparent addresses for
the given account, as described in BIP 44 under the change path level. This
cannot be undone, so as far as possible, errors associated with transaction
construction should have been reported before calling this method. Read moreSource§fn set_transaction_status(
&mut self,
txid: TxId,
status: TransactionStatus,
) -> Result<(), <Self as WalletRead>::Error>
fn set_transaction_status( &mut self, txid: TxId, status: TransactionStatus, ) -> Result<(), <Self as WalletRead>::Error>
Source§fn schedule_next_check(
&mut self,
address: &TransparentAddress,
offset_seconds: u32,
) -> Result<Option<SystemTime>, <Self as WalletRead>::Error>
fn schedule_next_check( &mut self, address: &TransparentAddress, offset_seconds: u32, ) -> Result<Option<SystemTime>, <Self as WalletRead>::Error>
transparent-inputs only.offset_seconds from the current system time. Read moreSource§fn mark_transparent_addresses_exposed(
&mut self,
exposures: &[(TransparentAddress, BlockHeight)],
) -> Result<(), <Self as WalletRead>::Error>
fn mark_transparent_addresses_exposed( &mut self, exposures: &[(TransparentAddress, BlockHeight)], ) -> Result<(), <Self as WalletRead>::Error>
transparent-inputs only.Source§fn notify_address_checked(
&mut self,
request: TransactionsInvolvingAddress,
as_of_height: BlockHeight,
) -> Result<(), <Self as WalletRead>::Error>
fn notify_address_checked( &mut self, request: TransactionsInvolvingAddress, as_of_height: BlockHeight, ) -> Result<(), <Self as WalletRead>::Error>
transparent-inputs only.Auto Trait Implementations§
impl<C, P, CL, R> Freeze for WalletDb<C, P, CL, R>
impl<C, P, CL, R> RefUnwindSafe for WalletDb<C, P, CL, R>
impl<C, P, CL, R> Send for WalletDb<C, P, CL, R>
impl<C, P, CL, R> Sync for WalletDb<C, P, CL, R>
impl<C, P, CL, R> Unpin for WalletDb<C, P, CL, R>
impl<C, P, CL, R> UnsafeUnpin for WalletDb<C, P, CL, R>
impl<C, P, CL, R> UnwindSafe for WalletDb<C, P, CL, R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<I> MetaSource for Iwhere
I: InputSource,
impl<I> MetaSource for Iwhere
I: InputSource,
type Error = <I as InputSource>::Error
type AccountId = <I as InputSource>::AccountId
type NoteRef = <I as InputSource>::NoteRef
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T, SE, TE, AR> PutBlocksDbT<SE, TE, AR> for Twhere
T: LowLevelWalletWrite<Error = SE> + WalletCommitmentTrees<Error = TE> + AddressStore<Error = SE, AccountRef = AR>,
impl<T, SE, AR> PutBlocksRowsDbT<SE, AR> for Twhere
T: LowLevelWalletWrite<Error = SE> + AddressStore<Error = SE, AccountRef = AR>,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.