}
(Some(_), None) => {
details.confirmation_time = None;
- self.state.observed_txs.push(details);
+ self.state.finished_txs.push(details);
}
- _ => self.state.observed_txs.push(details),
+ _ => self.state.finished_txs.push(details),
}
}
None => {
if let Some(mut tx_details) = tx_details {
tx_details.confirmation_time = confirmation_time;
- self.state.observed_txs.push(tx_details);
+ self.state.finished_txs.push(tx_details);
}
}
struct State<'a, D> {
db: &'a D,
last_active_index: HashMap<KeychainKind, usize>,
+ /// Transactions where we need to get the full details
tx_needed: VecDeque<Txid>,
+ /// Transactions where we need to get the confirmation time
conftime_needed: VecDeque<Txid>,
- observed_txs: Vec<TransactionDetails>,
+ /// Transacitions that we know everything about
+ finished_txs: Vec<TransactionDetails>,
+ /// Transactions that discovered conftimes should be inserted into
tx_missing_conftime: HashMap<Txid, TransactionDetails>,
+ /// The start of the sync
start_time: Instant,
}
db,
last_active_index: HashMap::default(),
conftime_needed: VecDeque::default(),
- observed_txs: vec![],
+ finished_txs: vec![],
tx_needed: VecDeque::default(),
tx_missing_conftime: HashMap::default(),
start_time: Instant::new(),
);
let existing_txs = self.db.iter_txs(false)?;
let existing_txids: HashSet<Txid> = existing_txs.iter().map(|tx| tx.txid).collect();
- let observed_txs = make_txs_consistent(&self.observed_txs);
- let observed_txids: HashSet<Txid> = observed_txs.iter().map(|tx| tx.txid).collect();
+ let finished_txs = make_txs_consistent(&self.finished_txs);
+ let observed_txids: HashSet<Txid> = finished_txs.iter().map(|tx| tx.txid).collect();
let txids_to_delete = existing_txids.difference(&observed_txids);
let mut batch = self.db.begin_batch();
}
// Set every tx we observed
- for observed_tx in &observed_txs {
- let tx = observed_tx
+ for finished_tx in &finished_txs {
+ let tx = finished_tx
.transaction
.as_ref()
.expect("transaction will always be present here");
// add utxos we own from the new transactions we've seen.
batch.set_utxo(&LocalUtxo {
outpoint: OutPoint {
- txid: observed_tx.txid,
+ txid: finished_tx.txid,
vout: i as u32,
},
txout: output.clone(),
})?;
}
}
- batch.set_tx(observed_tx)?;
+ batch.set_tx(finished_tx)?;
}
// we don't do this in the loop above since we may want to delete some of the utxos we
// just added in case there are new tranasactions that spend form each other.
- for observed_tx in &observed_txs {
- let tx = observed_tx
+ for finished_tx in &finished_txs {
+ let tx = finished_tx
.transaction
.as_ref()
.expect("transaction will always be present here");