@@ -40,7 +40,7 @@ use ln::chan_utils::{CounterpartyCommitmentSecrets, HTLCOutputInCommitment, HTLC
4040use ln:: channelmanager:: HTLCSource ;
4141use chain;
4242use chain:: { BestBlock , WatchedOutput } ;
43- use chain:: chaininterface:: { BroadcasterInterface , FeeEstimator } ;
43+ use chain:: chaininterface:: { BroadcasterInterface , FeeEstimator , LowerBoundedFeeEstimator } ;
4444use chain:: transaction:: { OutPoint , TransactionData } ;
4545use chain:: keysinterface:: { SpendableOutputDescriptor , StaticPaymentOutputDescriptor , DelayedPaymentOutputDescriptor , Sign , KeysInterface } ;
4646use chain:: onchaintx:: OnchainTxHandler ;
@@ -1099,7 +1099,7 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
10991099 payment_hash : & PaymentHash ,
11001100 payment_preimage : & PaymentPreimage ,
11011101 broadcaster : & B ,
1102- fee_estimator : & F ,
1102+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
11031103 logger : & L ,
11041104 ) where
11051105 B :: Target : BroadcasterInterface ,
@@ -1295,8 +1295,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
12951295 F :: Target : FeeEstimator ,
12961296 L :: Target : Logger ,
12971297 {
1298+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
12981299 self . inner . lock ( ) . unwrap ( ) . transactions_confirmed (
1299- header, txdata, height, broadcaster, fee_estimator , logger)
1300+ header, txdata, height, broadcaster, & bounded_fee_estimator , logger)
13001301 }
13011302
13021303 /// Processes a transaction that was reorganized out of the chain.
@@ -1316,8 +1317,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
13161317 F :: Target : FeeEstimator ,
13171318 L :: Target : Logger ,
13181319 {
1320+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
13191321 self . inner . lock ( ) . unwrap ( ) . transaction_unconfirmed (
1320- txid, broadcaster, fee_estimator , logger) ;
1322+ txid, broadcaster, & bounded_fee_estimator , logger) ;
13211323 }
13221324
13231325 /// Updates the monitor with the current best chain tip, returning new outputs to watch. See
@@ -1340,8 +1342,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
13401342 F :: Target : FeeEstimator ,
13411343 L :: Target : Logger ,
13421344 {
1345+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
13431346 self . inner . lock ( ) . unwrap ( ) . best_block_updated (
1344- header, height, broadcaster, fee_estimator , logger)
1347+ header, height, broadcaster, & bounded_fee_estimator , logger)
13451348 }
13461349
13471350 /// Returns the set of txids that should be monitored for re-organization out of the chain.
@@ -1877,7 +1880,9 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
18771880
18781881 /// Provides a payment_hash->payment_preimage mapping. Will be automatically pruned when all
18791882 /// commitment_tx_infos which contain the payment hash have been revoked.
1880- fn provide_payment_preimage < B : Deref , F : Deref , L : Deref > ( & mut self , payment_hash : & PaymentHash , payment_preimage : & PaymentPreimage , broadcaster : & B , fee_estimator : & F , logger : & L )
1883+ fn provide_payment_preimage < B : Deref , F : Deref , L : Deref > (
1884+ & mut self , payment_hash : & PaymentHash , payment_preimage : & PaymentPreimage , broadcaster : & B ,
1885+ fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L )
18811886 where B :: Target : BroadcasterInterface ,
18821887 F :: Target : FeeEstimator ,
18831888 L :: Target : Logger ,
@@ -1975,7 +1980,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
19751980 } ,
19761981 ChannelMonitorUpdateStep :: PaymentPreimage { payment_preimage } => {
19771982 log_trace ! ( logger, "Updating ChannelMonitor with payment preimage" ) ;
1978- self . provide_payment_preimage ( & PaymentHash ( Sha256 :: hash ( & payment_preimage. 0 [ ..] ) . into_inner ( ) ) , & payment_preimage, broadcaster, fee_estimator, logger)
1983+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
1984+ self . provide_payment_preimage ( & PaymentHash ( Sha256 :: hash ( & payment_preimage. 0 [ ..] ) . into_inner ( ) ) , & payment_preimage, broadcaster, & bounded_fee_estimator, logger)
19791985 } ,
19801986 ChannelMonitorUpdateStep :: CommitmentSecret { idx, secret } => {
19811987 log_trace ! ( logger, "Updating ChannelMonitor with commitment secret" ) ;
@@ -2401,15 +2407,16 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
24012407 let block_hash = header. block_hash ( ) ;
24022408 self . best_block = BestBlock :: new ( block_hash, height) ;
24032409
2404- self . transactions_confirmed ( header, txdata, height, broadcaster, fee_estimator, logger)
2410+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
2411+ self . transactions_confirmed ( header, txdata, height, broadcaster, & bounded_fee_estimator, logger)
24052412 }
24062413
24072414 fn best_block_updated < B : Deref , F : Deref , L : Deref > (
24082415 & mut self ,
24092416 header : & BlockHeader ,
24102417 height : u32 ,
24112418 broadcaster : B ,
2412- fee_estimator : F ,
2419+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
24132420 logger : L ,
24142421 ) -> Vec < TransactionOutputs >
24152422 where
@@ -2436,7 +2443,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
24362443 txdata : & TransactionData ,
24372444 height : u32 ,
24382445 broadcaster : B ,
2439- fee_estimator : F ,
2446+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
24402447 logger : L ,
24412448 ) -> Vec < TransactionOutputs >
24422449 where
@@ -2533,7 +2540,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
25332540 mut watch_outputs : Vec < TransactionOutputs > ,
25342541 mut claimable_outpoints : Vec < PackageTemplate > ,
25352542 broadcaster : & B ,
2536- fee_estimator : & F ,
2543+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
25372544 logger : & L ,
25382545 ) -> Vec < TransactionOutputs >
25392546 where
@@ -2671,7 +2678,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
26712678 //- maturing spendable output has transaction paying us has been disconnected
26722679 self . onchain_events_awaiting_threshold_conf . retain ( |ref entry| entry. height < height) ;
26732680
2674- self . onchain_tx_handler . block_disconnected ( height, broadcaster, fee_estimator, logger) ;
2681+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
2682+ self . onchain_tx_handler . block_disconnected ( height, broadcaster, & bounded_fee_estimator, logger) ;
26752683
26762684 self . best_block = BestBlock :: new ( header. prev_blockhash , height - 1 ) ;
26772685 }
@@ -2680,7 +2688,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
26802688 & mut self ,
26812689 txid : & Txid ,
26822690 broadcaster : B ,
2683- fee_estimator : F ,
2691+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
26842692 logger : L ,
26852693 ) where
26862694 B :: Target : BroadcasterInterface ,
@@ -3420,6 +3428,8 @@ mod tests {
34203428
34213429 use hex;
34223430
3431+ use crate :: chain:: chaininterface:: LowerBoundedFeeEstimator ;
3432+
34233433 use super :: ChannelMonitorUpdateStep ;
34243434 use :: { check_added_monitors, check_closed_broadcast, check_closed_event, check_spends, get_local_commitment_txn, get_monitor, get_route_and_payment_hash, unwrap_send_err} ;
34253435 use chain:: { BestBlock , Confirm } ;
@@ -3541,7 +3551,7 @@ mod tests {
35413551 let secp_ctx = Secp256k1 :: new ( ) ;
35423552 let logger = Arc :: new ( TestLogger :: new ( ) ) ;
35433553 let broadcaster = Arc :: new ( TestBroadcaster { txn_broadcasted : Mutex :: new ( Vec :: new ( ) ) , blocks : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) } ) ;
3544- let fee_estimator = Arc :: new ( TestFeeEstimator { sat_per_kw : Mutex :: new ( 253 ) } ) ;
3554+ let fee_estimator = TestFeeEstimator { sat_per_kw : Mutex :: new ( 253 ) } ;
35453555
35463556 let dummy_key = PublicKey :: from_secret_key ( & secp_ctx, & SecretKey :: from_slice ( & [ 42 ; 32 ] ) . unwrap ( ) ) ;
35473557 let dummy_tx = Transaction { version : 0 , lock_time : 0 , input : Vec :: new ( ) , output : Vec :: new ( ) } ;
@@ -3640,7 +3650,8 @@ mod tests {
36403650 monitor. provide_latest_counterparty_commitment_tx ( dummy_txid, preimages_slice_to_htlc_outputs ! ( preimages[ 17 ..20 ] ) , 281474976710653 , dummy_key, & logger) ;
36413651 monitor. provide_latest_counterparty_commitment_tx ( dummy_txid, preimages_slice_to_htlc_outputs ! ( preimages[ 18 ..20 ] ) , 281474976710652 , dummy_key, & logger) ;
36423652 for & ( ref preimage, ref hash) in preimages. iter ( ) {
3643- monitor. provide_payment_preimage ( hash, preimage, & broadcaster, & fee_estimator, & logger) ;
3653+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( & fee_estimator) ;
3654+ monitor. provide_payment_preimage ( hash, preimage, & broadcaster, & bounded_fee_estimator, & logger) ;
36443655 }
36453656
36463657 // Now provide a secret, pruning preimages 10-15
0 commit comments