@@ -547,17 +547,21 @@ impl<ChannelSigner: Sign> OnchainTxHandler<ChannelSigner> {
547
547
548
548
/// Upon channelmonitor.block_connected(..) or upon provision of a preimage on the forward link
549
549
/// for this channel, provide new relevant on-chain transactions and/or new claim requests.
550
- /// Formerly this was named `block_connected`, but it is now also used for claiming an HTLC output
551
- /// if we receive a preimage after force-close.
550
+ /// Together with `update_claims_view_from_matched_txn` this used to be named
551
+ /// `block_connected`, but it is now also used for claiming an HTLC output if we receive a
552
+ /// preimage after force-close.
553
+ ///
552
554
/// `conf_height` represents the height at which the transactions in `txn_matched` were
553
555
/// confirmed. This does not need to equal the current blockchain tip height, which should be
554
556
/// provided via `cur_height`, however it must never be higher than `cur_height`.
555
- pub ( crate ) fn update_claims_view < B : Deref , F : Deref , L : Deref > ( & mut self , txn_matched : & [ & Transaction ] , requests : Vec < PackageTemplate > , conf_height : u32 , conf_hash : BlockHash , cur_height : u32 , broadcaster : & B , fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L )
557
+ pub ( crate ) fn update_claims_view_from_requests < B : Deref , F : Deref , L : Deref > ( & mut self ,
558
+ requests : Vec < PackageTemplate > , conf_height : u32 , cur_height : u32 , broadcaster : & B ,
559
+ fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L )
556
560
where B :: Target : BroadcasterInterface ,
557
- F :: Target : FeeEstimator ,
558
- L :: Target : Logger ,
561
+ F :: Target : FeeEstimator ,
562
+ L :: Target : Logger ,
559
563
{
560
- log_debug ! ( logger, "Updating claims view at height {} with {} matched transactions in block {} and {} claim requests" , cur_height, txn_matched . len ( ) , conf_height , requests. len( ) ) ;
564
+ log_debug ! ( logger, "Updating claims view at height {} with {} claim requests" , cur_height, requests. len( ) ) ;
561
565
let mut preprocessed_requests = Vec :: with_capacity ( requests. len ( ) ) ;
562
566
let mut aggregated_request = None ;
563
567
@@ -638,6 +642,25 @@ impl<ChannelSigner: Sign> OnchainTxHandler<ChannelSigner> {
638
642
}
639
643
}
640
644
645
+ self . process_onchain_events_awaiting_threshold_conf ( cur_height, logger) ;
646
+ }
647
+
648
+ /// Upon channelmonitor.block_connected(..) or upon provision of a preimage on the forward link
649
+ /// for this channel, provide new relevant on-chain transactions and/or new claim requests.
650
+ /// Together with `update_claims_view_from_requests` this used to be named `block_connected`,
651
+ /// but it is now also used for claiming an HTLC output if we receive a preimage after force-close.
652
+ ///
653
+ /// `conf_height` represents the height at which the transactions in `txn_matched` were
654
+ /// confirmed. This does not need to equal the current blockchain tip height, which should be
655
+ /// provided via `cur_height`, however it must never be higher than `cur_height`.
656
+ pub ( crate ) fn update_claims_view_from_matched_txn < B : Deref , F : Deref , L : Deref > ( & mut self ,
657
+ txn_matched : & [ & Transaction ] , conf_height : u32 , conf_hash : BlockHash , cur_height : u32 ,
658
+ broadcaster : & B , fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L )
659
+ where B :: Target : BroadcasterInterface ,
660
+ F :: Target : FeeEstimator ,
661
+ L :: Target : Logger ,
662
+ {
663
+ log_debug ! ( logger, "Updating claims view at height {} with {} matched transactions in block {}" , cur_height, txn_matched. len( ) , conf_height) ;
641
664
let mut bump_candidates = HashMap :: new ( ) ;
642
665
for tx in txn_matched {
643
666
// Scan all input to verify is one of the outpoint spent is of interest for us
@@ -715,34 +738,7 @@ impl<ChannelSigner: Sign> OnchainTxHandler<ChannelSigner> {
715
738
}
716
739
}
717
740
718
- // After security delay, either our claim tx got enough confs or outpoint is definetely out of reach
719
- let onchain_events_awaiting_threshold_conf =
720
- self . onchain_events_awaiting_threshold_conf . drain ( ..) . collect :: < Vec < _ > > ( ) ;
721
- for entry in onchain_events_awaiting_threshold_conf {
722
- if entry. has_reached_confirmation_threshold ( cur_height) {
723
- match entry. event {
724
- OnchainEvent :: Claim { claim_request } => {
725
- // We may remove a whole set of claim outpoints here, as these one may have
726
- // been aggregated in a single tx and claimed so atomically
727
- if let Some ( request) = self . pending_claim_requests . remove ( & claim_request) {
728
- for outpoint in request. outpoints ( ) {
729
- log_debug ! ( logger, "Removing claim tracking for {} due to maturation of claim tx {}." , outpoint, claim_request) ;
730
- self . claimable_outpoints . remove ( & outpoint) ;
731
- #[ cfg( anchors) ]
732
- self . pending_claim_events . remove ( & claim_request) ;
733
- }
734
- }
735
- } ,
736
- OnchainEvent :: ContentiousOutpoint { package } => {
737
- log_debug ! ( logger, "Removing claim tracking due to maturation of claim tx for outpoints:" ) ;
738
- log_debug ! ( logger, " {:?}" , package. outpoints( ) ) ;
739
- self . claimable_outpoints . remove ( & package. outpoints ( ) [ 0 ] ) ;
740
- }
741
- }
742
- } else {
743
- self . onchain_events_awaiting_threshold_conf . push ( entry) ;
744
- }
745
- }
741
+ self . process_onchain_events_awaiting_threshold_conf ( cur_height, logger) ;
746
742
747
743
// Check if any pending claim request must be rescheduled
748
744
for ( first_claim_txid, ref request) in self . pending_claim_requests . iter ( ) {
@@ -776,6 +772,39 @@ impl<ChannelSigner: Sign> OnchainTxHandler<ChannelSigner> {
776
772
}
777
773
}
778
774
775
+ fn process_onchain_events_awaiting_threshold_conf < L : Deref > ( & mut self , cur_height : u32 , logger : & L )
776
+ where L :: Target : Logger ,
777
+ {
778
+ // After security delay, either our claim tx got enough confs or outpoint is definetely out of reach
779
+ let onchain_events_awaiting_threshold_conf =
780
+ self . onchain_events_awaiting_threshold_conf . drain ( ..) . collect :: < Vec < _ > > ( ) ;
781
+ for entry in onchain_events_awaiting_threshold_conf {
782
+ if entry. has_reached_confirmation_threshold ( cur_height) {
783
+ match entry. event {
784
+ OnchainEvent :: Claim { claim_request } => {
785
+ // We may remove a whole set of claim outpoints here, as these one may have
786
+ // been aggregated in a single tx and claimed so atomically
787
+ if let Some ( request) = self . pending_claim_requests . remove ( & claim_request) {
788
+ for outpoint in request. outpoints ( ) {
789
+ log_debug ! ( logger, "Removing claim tracking for {} due to maturation of claim tx {}." , outpoint, claim_request) ;
790
+ self . claimable_outpoints . remove ( & outpoint) ;
791
+ #[ cfg( anchors) ]
792
+ self . pending_claim_events . remove ( & claim_request) ;
793
+ }
794
+ }
795
+ } ,
796
+ OnchainEvent :: ContentiousOutpoint { package } => {
797
+ log_debug ! ( logger, "Removing claim tracking due to maturation of claim tx for outpoints:" ) ;
798
+ log_debug ! ( logger, " {:?}" , package. outpoints( ) ) ;
799
+ self . claimable_outpoints . remove ( & package. outpoints ( ) [ 0 ] ) ;
800
+ }
801
+ }
802
+ } else {
803
+ self . onchain_events_awaiting_threshold_conf . push ( entry) ;
804
+ }
805
+ }
806
+ }
807
+
779
808
pub ( crate ) fn transaction_unconfirmed < B : Deref , F : Deref , L : Deref > (
780
809
& mut self ,
781
810
txid : & Txid ,
0 commit comments