Browse Source

Clear UTXOs

master
Aditya Kulkarni 5 years ago
parent
commit
fedd238343
  1. 8
      rust-lightclient/src/lightclient.rs
  2. 10
      rust-lightclient/src/lightwallet.rs

8
rust-lightclient/src/lightclient.rs

@ -316,6 +316,14 @@ impl LightClient {
println!("Synced to {}, Downloaded {} kB \r",
last_block, bytes_downloaded.load(Ordering::SeqCst) / 1024);
// TODO: This is a super hack. Clear all UTXOs
{
let mut txs = self.wallet.txs.write().unwrap();
for tx in txs.values_mut() {
tx.utxos.clear();
}
}
// Fetch UTXOs
self.wallet.tkeys.iter()
.map( |sk| LightWallet::address_from_sk(&sk))

10
rust-lightclient/src/lightwallet.rs

@ -28,7 +28,7 @@ use zcash_primitives::{
components::{Amount, OutPoint, TxOut}, components::amount::DEFAULT_FEE,
TxId, Transaction,
},
legacy::{Script, TransparentAddress::PublicKey},
legacy::{Script},
note_encryption::{Memo, try_sapling_note_decryption},
zip32::{ExtendedFullViewingKey, ExtendedSpendingKey, ChildIndex},
JUBJUB,
@ -357,11 +357,13 @@ pub struct WalletTx {
// List of all Utxos recieved in this Tx. Some of these might be change notes
pub utxos: Vec<Utxo>,
// Total shielded value spent in this Tx. Note that this is the value of notes spent,
// the change is returned in the notes above. Subtract the two to get the actual value spent.
// Total shielded value spent in this Tx. Note that this is the value of the wallet's notes spent.
// Some change may be returned in one of the notes above. Subtract the two to get the actual value spent.
// Also note that even after subtraction, you might need to account for transparent inputs and outputs
// to make sure the value is accurate.
pub total_shielded_value_spent: u64,
// TODO: Add total_transparent_spent, so it can be added to total_shielded_value_spent
}
impl WalletTx {
@ -735,8 +737,8 @@ impl LightWallet {
// Scan the full Tx and update memos for incoming shielded transactions
pub fn scan_full_tx(&self, tx: &Transaction) {
// Scan outputs to see if anyone of them is us, and if it is, extract the memo
for output in tx.shielded_outputs.iter() {
let ivks: Vec<_> = self.extfvks.iter().map(|extfvk| extfvk.fvk.vk.ivk()).collect();
let cmu = output.cmu;

Loading…
Cancel
Save