@@ -5740,16 +5740,16 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
57405740		let channel_type = Self::get_initial_channel_type(&config, their_features);
57415741		debug_assert!(channel_type.is_subset(&channelmanager::provided_channel_type_features(&config)));
57425742
5743- 		let commitment_conf_target = if channel_type.supports_anchors_zero_fee_htlc_tx() {
5744- 			ConfirmationTarget::MempoolMinimum
5743+ 		let ( commitment_conf_target, anchor_outputs_value_msat)   = if channel_type.supports_anchors_zero_fee_htlc_tx() {
5744+ 			( ConfirmationTarget::MempoolMinimum, ANCHOR_OUTPUT_VALUE_SATOSHI * 2 * 1000) 
57455745		} else {
5746- 			ConfirmationTarget::Normal
5746+ 			( ConfirmationTarget::Normal, 0) 
57475747		};
57485748		let commitment_feerate = fee_estimator.bounded_sat_per_1000_weight(commitment_conf_target);
57495749
57505750		let value_to_self_msat = channel_value_satoshis * 1000 - push_msat;
57515751		let commitment_tx_fee = commit_tx_fee_msat(commitment_feerate, MIN_AFFORDABLE_HTLC_COUNT, &channel_type);
5752- 		if value_to_self_msat < commitment_tx_fee {
5752+ 		if value_to_self_msat - anchor_outputs_value_msat  < commitment_tx_fee {
57535753			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) });
57545754		}
57555755
@@ -6366,13 +6366,18 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
63666366
63676367		// check if the funder's amount for the initial commitment tx is sufficient
63686368		// for full fee payment plus a few HTLCs to ensure the channel will be useful.
6369+ 		let anchor_outputs_value = if channel_type.supports_anchors_zero_fee_htlc_tx() {
6370+ 			ANCHOR_OUTPUT_VALUE_SATOSHI * 2
6371+ 		} else {
6372+ 			0
6373+ 		};
63696374		let funders_amount_msat = msg.funding_satoshis * 1000 - msg.push_msat;
63706375		let commitment_tx_fee = commit_tx_fee_msat(msg.feerate_per_kw, MIN_AFFORDABLE_HTLC_COUNT, &channel_type) / 1000;
6371- 		if funders_amount_msat / 1000 < commitment_tx_fee {
6376+ 		if funders_amount_msat / 1000 - anchor_outputs_value  < commitment_tx_fee {
63726377			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)));
63736378		}
63746379
6375- 		let to_remote_satoshis = funders_amount_msat / 1000 - commitment_tx_fee;
6380+ 		let to_remote_satoshis = funders_amount_msat / 1000 - commitment_tx_fee - anchor_outputs_value ;
63766381		// While it's reasonable for us to not meet the channel reserve initially (if they don't
63776382		// want to push much to us), our counterparty should always have more than our reserve.
63786383		if to_remote_satoshis < holder_selected_channel_reserve_satoshis {
0 commit comments