@@ -5745,16 +5745,16 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
5745
5745
let channel_type = Self::get_initial_channel_type(&config, their_features);
5746
5746
debug_assert!(channel_type.is_subset(&channelmanager::provided_channel_type_features(&config)));
5747
5747
5748
- let commitment_conf_target = if channel_type.supports_anchors_zero_fee_htlc_tx() {
5749
- ConfirmationTarget::MempoolMinimum
5748
+ let ( commitment_conf_target, anchor_outputs_value_msat) = if channel_type.supports_anchors_zero_fee_htlc_tx() {
5749
+ ( ConfirmationTarget::MempoolMinimum, ANCHOR_OUTPUT_VALUE_SATOSHI * 2 * 1000)
5750
5750
} else {
5751
- ConfirmationTarget::Normal
5751
+ ( ConfirmationTarget::Normal, 0)
5752
5752
};
5753
5753
let commitment_feerate = fee_estimator.bounded_sat_per_1000_weight(commitment_conf_target);
5754
5754
5755
5755
let value_to_self_msat = channel_value_satoshis * 1000 - push_msat;
5756
5756
let commitment_tx_fee = commit_tx_fee_msat(commitment_feerate, MIN_AFFORDABLE_HTLC_COUNT, &channel_type);
5757
- if value_to_self_msat < commitment_tx_fee {
5757
+ if value_to_self_msat.saturating_sub(anchor_outputs_value_msat) < commitment_tx_fee {
5758
5758
return Err(APIError::APIMisuseError{ err: format!("Funding amount ({}) can't even pay fee for initial commitment transaction fee of {}.", value_to_self_msat / 1000, commitment_tx_fee / 1000) });
5759
5759
}
5760
5760
@@ -6371,13 +6371,18 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
6371
6371
6372
6372
// check if the funder's amount for the initial commitment tx is sufficient
6373
6373
// for full fee payment plus a few HTLCs to ensure the channel will be useful.
6374
+ let anchor_outputs_value = if channel_type.supports_anchors_zero_fee_htlc_tx() {
6375
+ ANCHOR_OUTPUT_VALUE_SATOSHI * 2
6376
+ } else {
6377
+ 0
6378
+ };
6374
6379
let funders_amount_msat = msg.funding_satoshis * 1000 - msg.push_msat;
6375
6380
let commitment_tx_fee = commit_tx_fee_msat(msg.feerate_per_kw, MIN_AFFORDABLE_HTLC_COUNT, &channel_type) / 1000;
6376
- if funders_amount_msat / 1000 < commitment_tx_fee {
6377
- return Err(ChannelError::Close(format!("Funding amount ({} sats) can't even pay fee for initial commitment transaction fee of {} sats.", funders_amount_msat / 1000, commitment_tx_fee)));
6381
+ if ( funders_amount_msat / 1000).saturating_sub(anchor_outputs_value) < commitment_tx_fee {
6382
+ return Err(ChannelError::Close(format!("Funding amount ({} sats) can't even pay fee for initial commitment transaction fee of {} sats.", ( funders_amount_msat / 1000).saturating_sub(anchor_outputs_value) , commitment_tx_fee)));
6378
6383
}
6379
6384
6380
- let to_remote_satoshis = funders_amount_msat / 1000 - commitment_tx_fee;
6385
+ let to_remote_satoshis = funders_amount_msat / 1000 - commitment_tx_fee - anchor_outputs_value ;
6381
6386
// While it's reasonable for us to not meet the channel reserve initially (if they don't
6382
6387
// want to push much to us), our counterparty should always have more than our reserve.
6383
6388
if to_remote_satoshis < holder_selected_channel_reserve_satoshis {
0 commit comments