projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Test utils: include payment_metadata in PassAlongPathArgs.
[rust-lightning]
/
lightning-transaction-sync
/
src
/
electrum.rs
diff --git
a/lightning-transaction-sync/src/electrum.rs
b/lightning-transaction-sync/src/electrum.rs
index 07e11338905370d9385dc7d5259053b624055ea4..046f698d4a259e3b0eace68790e59cfe1d406eb7 100644
(file)
--- a/
lightning-transaction-sync/src/electrum.rs
+++ b/
lightning-transaction-sync/src/electrum.rs
@@
-86,6
+86,7
@@
where
let mut sync_state = self.sync_state.lock().unwrap();
log_trace!(self.logger, "Starting transaction sync.");
let mut sync_state = self.sync_state.lock().unwrap();
log_trace!(self.logger, "Starting transaction sync.");
+ #[cfg(feature = "time")]
let start_time = Instant::now();
let mut num_confirmed = 0;
let mut num_unconfirmed = 0;
let start_time = Instant::now();
let mut num_confirmed = 0;
let mut num_unconfirmed = 0;
@@
-156,6
+157,9
@@
where
for c in &confirmables {
c.best_block_updated(&tip_header, tip_height);
}
for c in &confirmables {
c.best_block_updated(&tip_header, tip_height);
}
+
+ // Prune any sufficiently confirmed output spends
+ sync_state.prune_output_spends(tip_height);
}
match self.get_confirmed_transactions(&sync_state) {
}
match self.get_confirmed_transactions(&sync_state) {
@@
-210,10
+214,15
@@
where
sync_state.pending_sync = false;
}
}
sync_state.pending_sync = false;
}
}
+ #[cfg(feature = "time")]
log_debug!(self.logger,
"Finished transaction sync at tip {} in {}ms: {} confirmed, {} unconfirmed.",
tip_header.block_hash(), start_time.elapsed().as_millis(), num_confirmed,
num_unconfirmed);
log_debug!(self.logger,
"Finished transaction sync at tip {} in {}ms: {} confirmed, {} unconfirmed.",
tip_header.block_hash(), start_time.elapsed().as_millis(), num_confirmed,
num_unconfirmed);
+ #[cfg(not(feature = "time"))]
+ log_debug!(self.logger,
+ "Finished transaction sync at tip {}: {} confirmed, {} unconfirmed.",
+ tip_header.block_hash(), num_confirmed, num_unconfirmed);
Ok(())
}
Ok(())
}
@@
-248,7
+257,7
@@
where
// First, check the confirmation status of registered transactions as well as the
// status of dependent transactions of registered outputs.
// First, check the confirmation status of registered transactions as well as the
// status of dependent transactions of registered outputs.
- let mut confirmed_txs = Vec::new();
+ let mut confirmed_txs
: Vec<ConfirmedTx>
= Vec::new();
let mut watched_script_pubkeys = Vec::with_capacity(
sync_state.watched_transactions.len() + sync_state.watched_outputs.len());
let mut watched_txs = Vec::with_capacity(sync_state.watched_transactions.len());
let mut watched_script_pubkeys = Vec::with_capacity(
sync_state.watched_transactions.len() + sync_state.watched_outputs.len());
let mut watched_txs = Vec::with_capacity(sync_state.watched_transactions.len());
@@
-296,6
+305,9
@@
where
for (i, script_history) in tx_results.iter().enumerate() {
let (txid, tx) = &watched_txs[i];
for (i, script_history) in tx_results.iter().enumerate() {
let (txid, tx) = &watched_txs[i];
+ if confirmed_txs.iter().any(|ctx| ctx.txid == **txid) {
+ continue;
+ }
let mut filtered_history = script_history.iter().filter(|h| h.tx_hash == **txid);
if let Some(history) = filtered_history.next()
{
let mut filtered_history = script_history.iter().filter(|h| h.tx_hash == **txid);
if let Some(history) = filtered_history.next()
{
@@
-315,6
+327,10
@@
where
}
let txid = possible_output_spend.tx_hash;
}
let txid = possible_output_spend.tx_hash;
+ if confirmed_txs.iter().any(|ctx| ctx.txid == txid) {
+ continue;
+ }
+
match self.client.transaction_get(&txid) {
Ok(tx) => {
let mut is_spend = false;
match self.client.transaction_get(&txid) {
Ok(tx) => {
let mut is_spend = false;
@@
-410,6
+426,7
@@
where
}
let confirmed_tx = ConfirmedTx {
tx: tx.clone(),
}
let confirmed_tx = ConfirmedTx {
tx: tx.clone(),
+ txid,
block_header, block_height: prob_conf_height,
pos,
};
block_header, block_height: prob_conf_height,
pos,
};