Skip to content

Commit 5fcddbe

Browse files
committed
f avoid rounding oddities for fees
1 parent 61d35c8 commit 5fcddbe

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lightning/src/ln/channel.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3815,24 +3815,24 @@ pub(super) fn maybe_add_funding_change_output<SP: Deref>(
38153815
) -> Result<Option<TxOut>, ChannelError> where
38163816
SP::Target: SignerProvider,
38173817
{
3818-
let our_funding_inputs_weight = funding_inputs_prev_outputs.iter().fold(0u64, |weight, prev_output| {
3818+
// Add the total estimated weight of our contributed inputs...
3819+
let mut our_contributed_weight = funding_inputs_prev_outputs.iter().fold(0u64, |weight, prev_output| {
38193820
weight.saturating_add(estimate_input_weight(prev_output).to_wu())
3820-
});
3821-
let our_funding_outputs_weight = funding_outputs.iter().fold(0u64, |weight, txout| {
3822-
weight.saturating_add(get_output_weight(&txout.script_pubkey).to_wu())
3823-
});
3824-
let our_contributed_weight = our_funding_outputs_weight.saturating_add(our_funding_inputs_weight);
3825-
let mut fees_sats = fee_for_weight(funding_feerate_sat_per_1000_weight, our_contributed_weight);
3821+
}).saturating_add(
3822+
// ... with the total weight of our contributed outputs.
3823+
funding_outputs.iter().fold(0u64, |weight, txout| {
3824+
weight.saturating_add(get_output_weight(&txout.script_pubkey).to_wu())
3825+
})
3826+
);
38263827

38273828
// If we are the initiator, we must pay for weight of all common fields in the funding transaction.
38283829
if is_initiator {
3829-
let common_fees = fee_for_weight(funding_feerate_sat_per_1000_weight, TX_COMMON_FIELDS_WEIGHT);
3830-
fees_sats = fees_sats.saturating_add(common_fees);
3830+
our_contributed_weight += TX_COMMON_FIELDS_WEIGHT;
38313831
}
38323832

38333833
let remaining_value = total_input_satoshis
38343834
.saturating_sub(our_funding_satoshis)
3835-
.saturating_sub(fees_sats);
3835+
.saturating_sub(fee_for_weight(funding_feerate_sat_per_1000_weight, our_contributed_weight));
38363836

38373837
if remaining_value < holder_dust_limit_satoshis {
38383838
Ok(None)

0 commit comments

Comments
 (0)