mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-07-30 03:41:28 +00:00
Unroll witnesses during rollbacks properly
This commit is contained in:
@@ -791,7 +791,7 @@ impl LightWallet {
|
||||
}
|
||||
}
|
||||
|
||||
// Next, remove transactions
|
||||
// Next, remove entire transactions
|
||||
{
|
||||
let mut txs = self.txs.write().unwrap();
|
||||
let txids_to_remove = txs.values()
|
||||
@@ -818,8 +818,21 @@ impl LightWallet {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// Of the notes that still remain, unroll the witness.
|
||||
// Remove `num_invalidated` items from the witness
|
||||
{
|
||||
let mut txs = self.txs.write().unwrap();
|
||||
|
||||
// Trim all witnesses for the invalidated blocks
|
||||
for tx in txs.values_mut() {
|
||||
for nd in tx.notes.iter_mut() {
|
||||
nd.witnesses.split_off(nd.witnesses.len().saturating_sub(num_invalidated));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
num_invalidated
|
||||
num_invalidated as u64
|
||||
}
|
||||
|
||||
// Scan a block. Will return an error with the block height that failed to scan
|
||||
|
Reference in New Issue
Block a user