@@ -77,7 +77,10 @@ impl FeeEstimator for OnchainFeeEstimator {
77
77
78
78
impl LdkFeeEstimator for OnchainFeeEstimator {
79
79
fn get_est_sat_per_1000_weight ( & self , confirmation_target : LdkConfirmationTarget ) -> u32 {
80
- self . estimate_fee_rate ( confirmation_target. into ( ) ) . to_sat_per_kwu ( ) as u32
80
+ self . estimate_fee_rate ( confirmation_target. into ( ) )
81
+ . to_sat_per_kwu ( )
82
+ . try_into ( )
83
+ . unwrap_or_else ( |_| get_fallback_rate_for_ldk_target ( confirmation_target) )
81
84
}
82
85
}
83
86
@@ -102,16 +105,20 @@ pub(crate) fn get_fallback_rate_for_target(target: ConfirmationTarget) -> u32 {
102
105
match target {
103
106
ConfirmationTarget :: OnchainPayment => 5000 ,
104
107
ConfirmationTarget :: ChannelFunding => 1000 ,
105
- ConfirmationTarget :: Lightning ( ldk_target) => match ldk_target {
106
- LdkConfirmationTarget :: MaximumFeeEstimate => 8000 ,
107
- LdkConfirmationTarget :: UrgentOnChainSweep => 5000 ,
108
- LdkConfirmationTarget :: MinAllowedAnchorChannelRemoteFee => FEERATE_FLOOR_SATS_PER_KW ,
109
- LdkConfirmationTarget :: MinAllowedNonAnchorChannelRemoteFee => FEERATE_FLOOR_SATS_PER_KW ,
110
- LdkConfirmationTarget :: AnchorChannelFee => 500 ,
111
- LdkConfirmationTarget :: NonAnchorChannelFee => 1000 ,
112
- LdkConfirmationTarget :: ChannelCloseMinimum => 500 ,
113
- LdkConfirmationTarget :: OutputSpendingFee => 1000 ,
114
- } ,
108
+ ConfirmationTarget :: Lightning ( ldk_target) => get_fallback_rate_for_ldk_target ( ldk_target) ,
109
+ }
110
+ }
111
+
112
+ pub ( crate ) fn get_fallback_rate_for_ldk_target ( target : LdkConfirmationTarget ) -> u32 {
113
+ match target {
114
+ LdkConfirmationTarget :: MaximumFeeEstimate => 8000 ,
115
+ LdkConfirmationTarget :: UrgentOnChainSweep => 5000 ,
116
+ LdkConfirmationTarget :: MinAllowedAnchorChannelRemoteFee => FEERATE_FLOOR_SATS_PER_KW ,
117
+ LdkConfirmationTarget :: MinAllowedNonAnchorChannelRemoteFee => FEERATE_FLOOR_SATS_PER_KW ,
118
+ LdkConfirmationTarget :: AnchorChannelFee => 500 ,
119
+ LdkConfirmationTarget :: NonAnchorChannelFee => 1000 ,
120
+ LdkConfirmationTarget :: ChannelCloseMinimum => 500 ,
121
+ LdkConfirmationTarget :: OutputSpendingFee => 1000 ,
115
122
}
116
123
}
117
124
@@ -137,7 +144,10 @@ pub(crate) fn apply_post_estimation_adjustments(
137
144
ConfirmationTarget :: Lightning (
138
145
LdkConfirmationTarget :: MinAllowedNonAnchorChannelRemoteFee ,
139
146
) => {
140
- let slightly_less_than_background = estimated_rate. to_sat_per_kwu ( ) - 250 ;
147
+ let slightly_less_than_background = estimated_rate
148
+ . to_sat_per_kwu ( )
149
+ . saturating_sub ( 250 )
150
+ . max ( FEERATE_FLOOR_SATS_PER_KW as u64 ) ;
141
151
FeeRate :: from_sat_per_kwu ( slightly_less_than_background)
142
152
} ,
143
153
_ => estimated_rate,
0 commit comments