@@ -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 ;
@@ -1104,7 +1104,7 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
11041104 payment_hash : & PaymentHash ,
11051105 payment_preimage : & PaymentPreimage ,
11061106 broadcaster : & B ,
1107- fee_estimator : & F ,
1107+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
11081108 logger : & L ,
11091109 ) where
11101110 B :: Target : BroadcasterInterface ,
@@ -1300,8 +1300,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
13001300 F :: Target : FeeEstimator ,
13011301 L :: Target : Logger ,
13021302 {
1303+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
13031304 self . inner . lock ( ) . unwrap ( ) . transactions_confirmed (
1304- header, txdata, height, broadcaster, fee_estimator , logger)
1305+ header, txdata, height, broadcaster, & bounded_fee_estimator , logger)
13051306 }
13061307
13071308 /// Processes a transaction that was reorganized out of the chain.
@@ -1321,8 +1322,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
13211322 F :: Target : FeeEstimator ,
13221323 L :: Target : Logger ,
13231324 {
1325+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
13241326 self . inner . lock ( ) . unwrap ( ) . transaction_unconfirmed (
1325- txid, broadcaster, fee_estimator , logger) ;
1327+ txid, broadcaster, & bounded_fee_estimator , logger) ;
13261328 }
13271329
13281330 /// Updates the monitor with the current best chain tip, returning new outputs to watch. See
@@ -1345,8 +1347,9 @@ impl<Signer: Sign> ChannelMonitor<Signer> {
13451347 F :: Target : FeeEstimator ,
13461348 L :: Target : Logger ,
13471349 {
1350+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
13481351 self . inner . lock ( ) . unwrap ( ) . best_block_updated (
1349- header, height, broadcaster, fee_estimator , logger)
1352+ header, height, broadcaster, & bounded_fee_estimator , logger)
13501353 }
13511354
13521355 /// Returns the set of txids that should be monitored for re-organization out of the chain.
@@ -1882,7 +1885,9 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
18821885
18831886 /// Provides a payment_hash->payment_preimage mapping. Will be automatically pruned when all
18841887 /// commitment_tx_infos which contain the payment hash have been revoked.
1885- 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 )
1888+ fn provide_payment_preimage < B : Deref , F : Deref , L : Deref > (
1889+ & mut self , payment_hash : & PaymentHash , payment_preimage : & PaymentPreimage , broadcaster : & B ,
1890+ fee_estimator : & LowerBoundedFeeEstimator < F > , logger : & L )
18861891 where B :: Target : BroadcasterInterface ,
18871892 F :: Target : FeeEstimator ,
18881893 L :: Target : Logger ,
@@ -1980,7 +1985,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
19801985 } ,
19811986 ChannelMonitorUpdateStep :: PaymentPreimage { payment_preimage } => {
19821987 log_trace ! ( logger, "Updating ChannelMonitor with payment preimage" ) ;
1983- self . provide_payment_preimage ( & PaymentHash ( Sha256 :: hash ( & payment_preimage. 0 [ ..] ) . into_inner ( ) ) , & payment_preimage, broadcaster, fee_estimator, logger)
1988+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
1989+ self . provide_payment_preimage ( & PaymentHash ( Sha256 :: hash ( & payment_preimage. 0 [ ..] ) . into_inner ( ) ) , & payment_preimage, broadcaster, & bounded_fee_estimator, logger)
19841990 } ,
19851991 ChannelMonitorUpdateStep :: CommitmentSecret { idx, secret } => {
19861992 log_trace ! ( logger, "Updating ChannelMonitor with commitment secret" ) ;
@@ -2406,15 +2412,16 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
24062412 let block_hash = header. block_hash ( ) ;
24072413 self . best_block = BestBlock :: new ( block_hash, height) ;
24082414
2409- self . transactions_confirmed ( header, txdata, height, broadcaster, fee_estimator, logger)
2415+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
2416+ self . transactions_confirmed ( header, txdata, height, broadcaster, & bounded_fee_estimator, logger)
24102417 }
24112418
24122419 fn best_block_updated < B : Deref , F : Deref , L : Deref > (
24132420 & mut self ,
24142421 header : & BlockHeader ,
24152422 height : u32 ,
24162423 broadcaster : B ,
2417- fee_estimator : F ,
2424+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
24182425 logger : L ,
24192426 ) -> Vec < TransactionOutputs >
24202427 where
@@ -2441,7 +2448,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
24412448 txdata : & TransactionData ,
24422449 height : u32 ,
24432450 broadcaster : B ,
2444- fee_estimator : F ,
2451+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
24452452 logger : L ,
24462453 ) -> Vec < TransactionOutputs >
24472454 where
@@ -2538,7 +2545,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
25382545 mut watch_outputs : Vec < TransactionOutputs > ,
25392546 mut claimable_outpoints : Vec < PackageTemplate > ,
25402547 broadcaster : & B ,
2541- fee_estimator : & F ,
2548+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
25422549 logger : & L ,
25432550 ) -> Vec < TransactionOutputs >
25442551 where
@@ -2676,7 +2683,8 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
26762683 //- maturing spendable output has transaction paying us has been disconnected
26772684 self . onchain_events_awaiting_threshold_conf . retain ( |ref entry| entry. height < height) ;
26782685
2679- self . onchain_tx_handler . block_disconnected ( height, broadcaster, fee_estimator, logger) ;
2686+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( fee_estimator) ;
2687+ self . onchain_tx_handler . block_disconnected ( height, broadcaster, & bounded_fee_estimator, logger) ;
26802688
26812689 self . best_block = BestBlock :: new ( header. prev_blockhash , height - 1 ) ;
26822690 }
@@ -2685,7 +2693,7 @@ impl<Signer: Sign> ChannelMonitorImpl<Signer> {
26852693 & mut self ,
26862694 txid : & Txid ,
26872695 broadcaster : B ,
2688- fee_estimator : F ,
2696+ fee_estimator : & LowerBoundedFeeEstimator < F > ,
26892697 logger : L ,
26902698 ) where
26912699 B :: Target : BroadcasterInterface ,
@@ -3428,6 +3436,8 @@ mod tests {
34283436
34293437 use hex;
34303438
3439+ use crate :: chain:: chaininterface:: LowerBoundedFeeEstimator ;
3440+
34313441 use super :: ChannelMonitorUpdateStep ;
34323442 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} ;
34333443 use chain:: { BestBlock , Confirm } ;
@@ -3549,7 +3559,7 @@ mod tests {
35493559 let secp_ctx = Secp256k1 :: new ( ) ;
35503560 let logger = Arc :: new ( TestLogger :: new ( ) ) ;
35513561 let broadcaster = Arc :: new ( TestBroadcaster { txn_broadcasted : Mutex :: new ( Vec :: new ( ) ) , blocks : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) } ) ;
3552- let fee_estimator = Arc :: new ( TestFeeEstimator { sat_per_kw : Mutex :: new ( 253 ) } ) ;
3562+ let fee_estimator = TestFeeEstimator { sat_per_kw : Mutex :: new ( 253 ) } ;
35533563
35543564 let dummy_key = PublicKey :: from_secret_key ( & secp_ctx, & SecretKey :: from_slice ( & [ 42 ; 32 ] ) . unwrap ( ) ) ;
35553565 let dummy_tx = Transaction { version : 0 , lock_time : 0 , input : Vec :: new ( ) , output : Vec :: new ( ) } ;
@@ -3648,7 +3658,8 @@ mod tests {
36483658 monitor. provide_latest_counterparty_commitment_tx ( dummy_txid, preimages_slice_to_htlc_outputs ! ( preimages[ 17 ..20 ] ) , 281474976710653 , dummy_key, & logger) ;
36493659 monitor. provide_latest_counterparty_commitment_tx ( dummy_txid, preimages_slice_to_htlc_outputs ! ( preimages[ 18 ..20 ] ) , 281474976710652 , dummy_key, & logger) ;
36503660 for & ( ref preimage, ref hash) in preimages. iter ( ) {
3651- monitor. provide_payment_preimage ( hash, preimage, & broadcaster, & fee_estimator, & logger) ;
3661+ let bounded_fee_estimator = LowerBoundedFeeEstimator :: new ( & fee_estimator) ;
3662+ monitor. provide_payment_preimage ( hash, preimage, & broadcaster, & bounded_fee_estimator, & logger) ;
36523663 }
36533664
36543665 // Now provide a secret, pruning preimages 10-15
0 commit comments