-use lightning::chain::WatchedOutput;
-use bitcoin::{Txid, BlockHash, Transaction, BlockHeader, OutPoint};
+use lightning::chain::{Confirm, WatchedOutput};
+use bitcoin::{Txid, BlockHash, Transaction, OutPoint};
+use bitcoin::block::Header;
use std::collections::{HashSet, HashMap};
pending_sync: false,
}
}
+ pub fn sync_unconfirmed_transactions(
+ &mut self, confirmables: &Vec<&(dyn Confirm + Sync + Send)>,
+ unconfirmed_txs: Vec<Txid>,
+ ) {
+ for txid in unconfirmed_txs {
+ for c in confirmables {
+ c.transaction_unconfirmed(&txid);
+ }
+
+ self.watched_transactions.insert(txid);
+ }
+ }
+
+ pub fn sync_confirmed_transactions(
+ &mut self, confirmables: &Vec<&(dyn Confirm + Sync + Send)>,
+ confirmed_txs: Vec<ConfirmedTx>
+ ) {
+ for ctx in confirmed_txs {
+ for c in confirmables {
+ c.transactions_confirmed(
+ &ctx.block_header,
+ &[(ctx.pos, &ctx.tx)],
+ ctx.block_height,
+ );
+ }
+
+ self.watched_transactions.remove(&ctx.tx.txid());
+
+ for input in &ctx.tx.input {
+ self.watched_outputs.remove(&input.previous_output);
+ }
+ }
+ }
}
}
}
+#[derive(Debug)]
pub(crate) struct ConfirmedTx {
pub tx: Transaction,
- pub block_header: BlockHeader,
+ pub block_header: Header,
pub block_height: u32,
pub pos: usize,
}