Use batch decryption in wallet scanning.
This modifies wallet scanning to perform per-block batched
decryption. It also alters the structure of the `ScanningKey`
trait to correctly include internal (change) keys in the scan
process.
Extracted from: 73314dc682
This commit is contained in:
parent
f258e3559e
commit
168fd15674
|
@ -47,6 +47,10 @@ fn batch_note_decryption<D: BatchDomain, Output: ShieldedOutput<D, CS>, F, FR, c
|
||||||
where
|
where
|
||||||
F: Fn(&D, &D::IncomingViewingKey, &EphemeralKeyBytes, &Output, &D::SymmetricKey) -> Option<FR>,
|
F: Fn(&D, &D::IncomingViewingKey, &EphemeralKeyBytes, &Output, &D::SymmetricKey) -> Option<FR>,
|
||||||
{
|
{
|
||||||
|
if ivks.is_empty() {
|
||||||
|
return (0..outputs.len()).map(|_| None).collect();
|
||||||
|
};
|
||||||
|
|
||||||
// Fetch the ephemeral keys for each output and batch-parse them.
|
// Fetch the ephemeral keys for each output and batch-parse them.
|
||||||
let ephemeral_keys = D::batch_epk(outputs.iter().map(|(_, output)| output.ephemeral_key()));
|
let ephemeral_keys = D::batch_epk(outputs.iter().map(|(_, output)| output.ephemeral_key()));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue