Add ChannelMonitor::get_relevant_txids

Define an Electrum-friendly interface for ChannelMonitor where txids of
relevant transactions can be obtained. For any of these transactions
that are re-orged out of the chain, users must call
transaction_unconfirmed.
This commit is contained in:
Jeffrey Czyz 2021-04-05 13:18:27 -07:00
parent 65e588fd92
commit c57bf73a02
No known key found for this signature in database
GPG key ID: 3A4E08275D5E96D2
2 changed files with 23 additions and 0 deletions

View file

@ -1385,6 +1385,19 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
self.inner.lock().unwrap().update_best_block(
header, height, broadcaster, fee_estimator, logger)
}
/// Returns the set of txids that should be monitored for re-organization out of the chain.
pub fn get_relevant_txids(&self) -> Vec<Txid> {
let inner = self.inner.lock().unwrap();
let mut txids: Vec<Txid> = inner.onchain_events_waiting_threshold_conf
.iter()
.map(|entry| entry.txid)
.chain(inner.onchain_tx_handler.get_relevant_txids().into_iter())
.collect();
txids.sort_unstable();
txids.dedup();
txids
}
}
impl<Signer: Sign> ChannelMonitorImpl<Signer> {

View file

@ -945,6 +945,16 @@ impl<ChannelSigner: Sign> OnchainTxHandler<ChannelSigner> {
}
}
pub(crate) fn get_relevant_txids(&self) -> Vec<Txid> {
let mut txids: Vec<Txid> = self.onchain_events_waiting_threshold_conf
.iter()
.map(|entry| entry.txid)
.collect();
txids.sort_unstable();
txids.dedup();
txids
}
pub(crate) fn provide_latest_holder_tx(&mut self, tx: HolderCommitmentTransaction) {
self.prev_holder_commitment = Some(replace(&mut self.holder_commitment, tx));
self.holder_htlc_sigs = None;