@@ -10404,35 +10404,41 @@ where
1040410404 /// - `our_funding_inputs`: the inputs we contribute to the new funding transaction.
1040510405 /// Includes the witness weight for this input (e.g. P2WPKH_WITNESS_WEIGHT=109 for typical P2WPKH inputs).
1040610406 #[cfg(splicing)]
10407- #[rustfmt::skip]
10408- pub fn splice_channel( &mut self, our_funding_contribution_satoshis: i64,
10409- our_funding_inputs: Vec<(TxIn, Transaction, Weight)>,
10410- funding_feerate_per_kw: u32, locktime: u32,
10407+ pub fn splice_channel(
10408+ &mut self, our_funding_contribution_satoshis: i64,
10409+ our_funding_inputs: Vec<(TxIn, Transaction, Weight)>, funding_feerate_per_kw: u32,
10410+ locktime: u32,
1041110411 ) -> Result<msgs::SpliceInit, APIError> {
1041210412 // Check if a splice has been initiated already.
1041310413 // Note: only a single outstanding splice is supported (per spec)
1041410414 if let Some(pending_splice) = &self.pending_splice {
10415- return Err(APIError::APIMisuseError { err: format!(
10415+ return Err(APIError::APIMisuseError {
10416+ err: format!(
1041610417 "Channel {} cannot be spliced, as it has already a splice pending (contribution {})",
1041710418 self.context.channel_id(),
1041810419 pending_splice.our_funding_contribution,
10419- )});
10420+ ),
10421+ });
1042010422 }
1042110423
1042210424 if !self.context.is_live() {
10423- return Err(APIError::APIMisuseError { err: format!(
10424- "Channel {} cannot be spliced, as channel is not live",
10425- self.context.channel_id()
10426- )});
10425+ return Err(APIError::APIMisuseError {
10426+ err: format!(
10427+ "Channel {} cannot be spliced, as channel is not live",
10428+ self.context.channel_id()
10429+ ),
10430+ });
1042710431 }
1042810432
1042910433 // TODO(splicing): check for quiescence
1043010434
1043110435 if our_funding_contribution_satoshis < 0 {
10432- return Err(APIError::APIMisuseError { err: format!(
10436+ return Err(APIError::APIMisuseError {
10437+ err: format!(
1043310438 "TODO(splicing): Splice-out not supported, only splice in; channel ID {}, contribution {}",
1043410439 self.context.channel_id(), our_funding_contribution_satoshis,
10435- )});
10440+ ),
10441+ });
1043610442 }
1043710443
1043810444 // TODO(splicing): Once splice-out is supported, check that channel balance does not go below 0
@@ -10442,11 +10448,20 @@ where
1044210448 // (Cannot test for miminum required post-splice channel value)
1044310449
1044410450 // Check that inputs are sufficient to cover our contribution.
10445- let _fee = check_v2_funding_inputs_sufficient(our_funding_contribution_satoshis, &our_funding_inputs, true, true, funding_feerate_per_kw)
10446- .map_err(|err| APIError::APIMisuseError { err: format!(
10451+ let _fee = check_v2_funding_inputs_sufficient(
10452+ our_funding_contribution_satoshis,
10453+ &our_funding_inputs,
10454+ true,
10455+ true,
10456+ funding_feerate_per_kw,
10457+ )
10458+ .map_err(|err| APIError::APIMisuseError {
10459+ err: format!(
1044710460 "Insufficient inputs for splicing; channel ID {}, err {}",
10448- self.context.channel_id(), err,
10449- )})?;
10461+ self.context.channel_id(),
10462+ err,
10463+ ),
10464+ })?;
1045010465 // Convert inputs
1045110466 let mut funding_inputs = Vec::new();
1045210467 for (tx_in, tx, _w) in our_funding_inputs.into_iter() {
@@ -10456,7 +10471,7 @@ where
1045610471 }
1045710472
1045810473 let funding_negotiation_context = FundingNegotiationContext {
10459- our_funding_satoshis: 0, // set at later phase
10474+ our_funding_satoshis: 0, // set at later phase
1046010475 their_funding_satoshis: None, // set at later phase
1046110476 funding_tx_locktime: LockTime::from_consensus(locktime),
1046210477 funding_feerate_sat_per_1000_weight: funding_feerate_per_kw,
@@ -10471,7 +10486,11 @@ where
1047110486 received_funding_txid: None,
1047210487 });
1047310488
10474- let msg = self.get_splice_init(our_funding_contribution_satoshis, funding_feerate_per_kw, locktime);
10489+ let msg = self.get_splice_init(
10490+ our_funding_contribution_satoshis,
10491+ funding_feerate_per_kw,
10492+ locktime,
10493+ );
1047510494 Ok(msg)
1047610495 }
1047710496
0 commit comments