indexer: &crate::indexer::keychain_txout::KeychainTxOutIndex<K>,
spk_range: impl core::ops::RangeBounds<K>,
) -> Self {
- use crate::alloc::borrow::ToOwned;
- use crate::alloc::vec::Vec;
- self.spks_with_labels(
- indexer
- .revealed_spks(spk_range)
- .map(|(i, spk)| (i, spk.to_owned()))
- .collect::<Vec<_>>(),
- )
+ self.spks_with_labels(indexer.revealed_spks(spk_range))
}
/// Add [`Script`]s that are revealed by the `indexer` but currently unused.
self,
indexer: &crate::indexer::keychain_txout::KeychainTxOutIndex<K>,
) -> Self {
- use crate::alloc::borrow::ToOwned;
- use crate::alloc::vec::Vec;
- self.spks_with_labels(
- indexer
- .unused_spks()
- .map(|(i, spk)| (i, spk.to_owned()))
- .collect::<Vec<_>>(),
- )
+ self.spks_with_labels(indexer.unused_spks())
}
}
None => None,
};
- let full_scan_request = FullScanRequest::builder()
- .spks_for_keychain(
- (),
- request
- .iter_spks()
- .enumerate()
- .map(|(i, spk)| (i as u32, spk))
- .collect::<Vec<_>>(),
- )
- .build();
- let mut graph_update = self
- .full_scan(full_scan_request, usize::MAX, batch_size, false)?
- .graph_update;
+ let mut graph_update = TxGraph::<ConfirmationBlockTime>::default();
+ self.populate_with_spks(
+ &mut graph_update,
+ request
+ .iter_spks()
+ .enumerate()
+ .map(|(i, spk)| (i as u32, spk)),
+ usize::MAX,
+ batch_size,
+ )?;
self.populate_with_txids(&mut graph_update, request.iter_txids())?;
self.populate_with_outpoints(&mut graph_update, request.iter_outpoints())?;
});
if all_spks {
- request = request.spks_with_labels(
- graph
- .index
- .revealed_spks(..)
- .map(|(index, spk)| (index, spk.to_owned())),
- );
+ request = request.spks_with_labels(graph.index.revealed_spks(..));
}
if unused_spks {
- request = request.spks_with_labels(
- graph
- .index
- .unused_spks()
- .map(|(index, spk)| (index, spk.to_owned())),
- );
+ request = request.spks_with_labels(graph.index.unused_spks());
}
-
if utxos {
let init_outpoints = graph.index.outpoints();
request = request.outpoints(
.map(|(_, utxo)| utxo.outpoint),
);
};
-
if unconfirmed {
request = request.txids(
graph
let chain = chain.lock().unwrap();
if *all_spks {
- request = request.spks_with_labels(
- graph
- .index
- .revealed_spks(..)
- .map(|(i, spk)| (i, spk.to_owned())),
- );
+ request = request.spks_with_labels(graph.index.revealed_spks(..));
}
if unused_spks {
- request = request.spks_with_labels(
- graph
- .index
- .unused_spks()
- .map(|(index, spk)| (index, spk.to_owned())),
- );
+ request = request.spks_with_labels(graph.index.unused_spks());
}
if utxos {
// We want to search for whether the UTXO is spent, and spent by which
let mut once = HashSet::<KeychainKind>::new();
move |k, spk_i, _| {
if once.insert(k) {
- print!("\nScanning keychain [{:?}]", k)
- } else {
- print!(" {:<3}", spk_i)
+ print!("\nScanning keychain [{:?}]", k);
}
+ print!(" {:<3}", spk_i);
stdout.flush().expect("must flush");
}
});