Skip to content

Commit 62c7b25

Browse files
committed
Introduce interactive signing state flags
This intoduces the INTERACTIVE_SIGNING, THEIR_TX_SIGNATURES_SENT, and OUR_TX_SIGNATURES_SENT funded state flags. A top-level state flag for INTERACTIVE_SIGNING was avoided so that this work is compatible with splicing as well as V2 channel establishment (dual-funding).
1 parent 1883977 commit 62c7b25

File tree

4 files changed

+77
-54
lines changed

4 files changed

+77
-54
lines changed

lightning/src/ln/channel.rs

Lines changed: 68 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,9 @@ mod state_flags {
479479
pub const LOCAL_STFU_SENT: u32 = 1 << 15;
480480
pub const REMOTE_STFU_SENT: u32 = 1 << 16;
481481
pub const QUIESCENT: u32 = 1 << 17;
482+
pub const INTERACTIVE_SIGNING: u32 = 1 << 18;
483+
pub const OUR_TX_SIGNATURES_SENT: u32 = 1 << 19;
484+
pub const THEIR_TX_SIGNATURES_SENT: u32 = 1 << 20;
482485
}
483486

484487
define_state_flags!(
@@ -511,6 +514,21 @@ define_state_flags!(
511514
]
512515
);
513516

517+
define_state_flags!(
518+
"Flags that only apply to [`ChannelState::FundingNegotiated`].",
519+
FUNDED_STATE, FundingNegotiatedFlags, [
520+
("Indicates we have an active interactive signing session for an interactive transaction",
521+
INTERACTIVE_SIGNING, state_flags::INTERACTIVE_SIGNING,
522+
is_interactive_signing, set_interactive_signing, clear_interactive_signing),
523+
("Indicates they sent us a `tx_signatures` message.",
524+
THEIR_TX_SIGNATURES_SENT, state_flags::THEIR_TX_SIGNATURES_SENT,
525+
is_their_tx_signatures_sent, set_their_tx_signatures_sent, clear_their_tx_signatures_sent),
526+
("Indicates we sent them a `tx_signatures` message.",
527+
OUR_TX_SIGNATURES_SENT, state_flags::OUR_TX_SIGNATURES_SENT,
528+
is_our_tx_signatures_sent, set_our_tx_signatures_sent, clear_our_tx_signatures_sent)
529+
]
530+
);
531+
514532
define_state_flags!(
515533
"Flags that only apply to [`ChannelState::AwaitingChannelReady`].",
516534
FUNDED_STATE, AwaitingChannelReadyFlags, [
@@ -568,8 +586,9 @@ enum ChannelState {
568586
NegotiatingFunding(NegotiatingFundingFlags),
569587
/// We have sent `funding_created` and are awaiting a `funding_signed` to advance to
570588
/// `AwaitingChannelReady`. Note that this is nonsense for an inbound channel as we immediately generate
571-
/// `funding_signed` upon receipt of `funding_created`, so simply skip this state.
572-
FundingNegotiated,
589+
/// `funding_signed` upon receipt of `funding_created`, so simply skip this state. For dual-funded (V2)
590+
/// channels, this state is also skipped.
591+
FundingNegotiated(FundingNegotiatedFlags),
573592
/// We've received/sent `funding_created` and `funding_signed` and are thus now waiting on the
574593
/// funding transaction to confirm.
575594
AwaitingChannelReady(AwaitingChannelReadyFlags),
@@ -612,7 +631,7 @@ macro_rules! impl_state_flag {
612631
}
613632
};
614633
($get: ident, $set: ident, $clear: ident, FUNDED_STATES) => {
615-
impl_state_flag!($get, $set, $clear, [AwaitingChannelReady, ChannelReady]);
634+
impl_state_flag!($get, $set, $clear, [FundingNegotiated, AwaitingChannelReady, ChannelReady]);
616635
};
617636
($get: ident, $set: ident, $clear: ident, $state: ident) => {
618637
impl_state_flag!($get, $set, $clear, [$state]);
@@ -622,10 +641,12 @@ macro_rules! impl_state_flag {
622641
impl ChannelState {
623642
fn from_u32(state: u32) -> Result<Self, ()> {
624643
match state {
625-
state_flags::FUNDING_NEGOTIATED => Ok(ChannelState::FundingNegotiated),
626644
state_flags::SHUTDOWN_COMPLETE => Ok(ChannelState::ShutdownComplete),
627645
val => {
628-
if val & state_flags::AWAITING_CHANNEL_READY == state_flags::AWAITING_CHANNEL_READY {
646+
if val & state_flags::FUNDING_NEGOTIATED == state_flags::FUNDING_NEGOTIATED {
647+
FundingNegotiatedFlags::from_u32(val & !state_flags::FUNDING_NEGOTIATED)
648+
.map(|flags| ChannelState::FundingNegotiated(flags))
649+
} else if val & state_flags::AWAITING_CHANNEL_READY == state_flags::AWAITING_CHANNEL_READY {
629650
AwaitingChannelReadyFlags::from_u32(val & !state_flags::AWAITING_CHANNEL_READY)
630651
.map(|flags| ChannelState::AwaitingChannelReady(flags))
631652
} else if val & state_flags::CHANNEL_READY == state_flags::CHANNEL_READY {
@@ -643,15 +664,15 @@ impl ChannelState {
643664
fn to_u32(self) -> u32 {
644665
match self {
645666
ChannelState::NegotiatingFunding(flags) => flags.0,
646-
ChannelState::FundingNegotiated => state_flags::FUNDING_NEGOTIATED,
667+
ChannelState::FundingNegotiated(flags) => state_flags::FUNDING_NEGOTIATED | flags.0,
647668
ChannelState::AwaitingChannelReady(flags) => state_flags::AWAITING_CHANNEL_READY | flags.0,
648669
ChannelState::ChannelReady(flags) => state_flags::CHANNEL_READY | flags.0,
649670
ChannelState::ShutdownComplete => state_flags::SHUTDOWN_COMPLETE,
650671
}
651672
}
652673

653674
fn is_pre_funded_state(&self) -> bool {
654-
matches!(self, ChannelState::NegotiatingFunding(_)|ChannelState::FundingNegotiated)
675+
matches!(self, ChannelState::NegotiatingFunding(_)|ChannelState::FundingNegotiated(_))
655676
}
656677

657678
fn is_both_sides_shutdown(&self) -> bool {
@@ -685,6 +706,9 @@ impl ChannelState {
685706
impl_state_flag!(is_monitor_update_in_progress, set_monitor_update_in_progress, clear_monitor_update_in_progress, FUNDED_STATES);
686707
impl_state_flag!(is_local_shutdown_sent, set_local_shutdown_sent, clear_local_shutdown_sent, FUNDED_STATES);
687708
impl_state_flag!(is_remote_shutdown_sent, set_remote_shutdown_sent, clear_remote_shutdown_sent, FUNDED_STATES);
709+
impl_state_flag!(is_interactive_signing, set_interactive_signing, clear_interactive_signing, FundingNegotiated);
710+
impl_state_flag!(is_our_tx_signatures_sent, set_our_tx_signatures_sent, clear_our_tx_signatures_sent, FundingNegotiated);
711+
impl_state_flag!(is_their_tx_signatures_sent, set_their_tx_signatures_sent, clear_their_tx_signatures_sent, FundingNegotiated);
688712
impl_state_flag!(is_our_channel_ready, set_our_channel_ready, clear_our_channel_ready, AwaitingChannelReady);
689713
impl_state_flag!(is_their_channel_ready, set_their_channel_ready, clear_their_channel_ready, AwaitingChannelReady);
690714
impl_state_flag!(is_waiting_for_batch, set_waiting_for_batch, clear_waiting_for_batch, AwaitingChannelReady);
@@ -2094,10 +2118,12 @@ trait InitialRemoteCommitmentReceiver<SP: Deref> where SP::Target: SignerProvide
20942118
context.channel_id = channel_id;
20952119

20962120
assert!(!context.channel_state.is_monitor_update_in_progress()); // We have not had any monitor(s) yet to fail update!
2097-
if context.is_batch_funding() {
2098-
context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::WAITING_FOR_BATCH);
2099-
} else {
2100-
context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
2121+
if !context.channel_state.is_interactive_signing() {
2122+
if context.is_batch_funding() {
2123+
context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::WAITING_FOR_BATCH);
2124+
} else {
2125+
context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
2126+
}
21012127
}
21022128
if holder_commitment_point.advance(&context.holder_signer, &context.secp_ctx, logger).is_err() {
21032129
// We only fail to advance our commitment point/number if we're currently
@@ -2349,7 +2375,9 @@ impl<SP: Deref> PendingV2Channel<SP> where SP::Target: SignerProvider {
23492375
)));
23502376
};
23512377

2352-
self.context.channel_state = ChannelState::FundingNegotiated;
2378+
let mut channel_state = ChannelState::FundingNegotiated(FundingNegotiatedFlags::new());
2379+
channel_state.set_interactive_signing();
2380+
self.context.channel_state = channel_state;
23532381

23542382
// Clear the interactive transaction constructor
23552383
self.interactive_tx_constructor.take();
@@ -3440,7 +3468,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
34403468

34413469
fn unset_funding_info(&mut self, funding: &mut FundingScope) {
34423470
debug_assert!(
3443-
matches!(self.channel_state, ChannelState::FundingNegotiated)
3471+
matches!(self.channel_state, ChannelState::FundingNegotiated(_))
34443472
|| matches!(self.channel_state, ChannelState::AwaitingChannelReady(_))
34453473
);
34463474
funding.channel_transaction_parameters.funding_outpoint = None;
@@ -4432,7 +4460,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
44324460

44334461
fn if_unbroadcasted_funding<F, O>(&self, f: F) -> Option<O> where F: Fn() -> Option<O> {
44344462
match self.channel_state {
4435-
ChannelState::FundingNegotiated => f(),
4463+
ChannelState::FundingNegotiated(_) => f(),
44364464
ChannelState::AwaitingChannelReady(flags) =>
44374465
if flags.is_set(AwaitingChannelReadyFlags::WAITING_FOR_BATCH) ||
44384466
flags.is_set(FundedStateFlags::MONITOR_UPDATE_IN_PROGRESS.into())
@@ -5642,7 +5670,7 @@ impl<SP: Deref> FundedChannel<SP> where
56425670
) -> Result<ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>, ChannelError>
56435671
where L::Target: Logger
56445672
{
5645-
if !matches!(self.context.channel_state, ChannelState::FundingNegotiated) {
5673+
if !matches!(self.context.channel_state, ChannelState::FundingNegotiated(_)) {
56465674
return Err(ChannelError::Close(
56475675
(
56485676
"Received initial commitment_signed before funding transaction constructed!".to_owned(),
@@ -5659,7 +5687,6 @@ impl<SP: Deref> FundedChannel<SP> where
56595687
log_info!(logger, "Received initial commitment_signed from peer for channel {}", &self.context.channel_id());
56605688

56615689
let need_channel_ready = self.check_get_channel_ready(0, logger).is_some();
5662-
self.context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
56635690
self.monitor_updating_paused(false, false, need_channel_ready, Vec::new(), Vec::new(), Vec::new());
56645691

56655692
if let Some(tx_signatures) = self.interactive_tx_signing_session.as_mut().and_then(
@@ -6246,10 +6273,10 @@ impl<SP: Deref> FundedChannel<SP> where
62466273
}
62476274
}
62486275

6249-
pub fn tx_signatures<L: Deref>(&mut self, msg: &msgs::TxSignatures, logger: &L) -> Result<Option<msgs::TxSignatures>, ChannelError>
6276+
pub fn tx_signatures<L: Deref>(&mut self, msg: &msgs::TxSignatures, logger: &L) -> Result<(Option<Transaction>, Option<msgs::TxSignatures>), ChannelError>
62506277
where L::Target: Logger
62516278
{
6252-
if !matches!(self.context.channel_state, ChannelState::AwaitingChannelReady(_)) {
6279+
if !matches!(self.context.channel_state, ChannelState::FundingNegotiated(flags) if flags.is_interactive_signing()) {
62536280
return Err(ChannelError::close("Received tx_signatures in strange state!".to_owned()));
62546281
}
62556282

@@ -6286,21 +6313,28 @@ impl<SP: Deref> FundedChannel<SP> where
62866313
let (holder_tx_signatures_opt, funding_tx_opt) = signing_session.received_tx_signatures(msg.clone())
62876314
.map_err(|_| ChannelError::Warn("Witness count did not match contributed input count".to_string()))?;
62886315

6316+
// Set `THEIR_TX_SIGNATURES_SENT` flag after all potential errors.
6317+
self.context.channel_state.set_their_tx_signatures_sent();
62896318

62906319
if funding_tx_opt.is_some() {
62916320
// We have a finalized funding transaction, so we can set the funding transaction and reset the
62926321
// signing session fields.
6293-
self.funding.funding_transaction = funding_tx_opt;
6322+
self.funding.funding_transaction = funding_tx_opt.clone();
62946323
self.interactive_tx_signing_session = None;
62956324
}
62966325

62976326
if holder_tx_signatures_opt.is_some() && self.is_awaiting_initial_mon_persist() {
62986327
log_debug!(logger, "Not sending tx_signatures: a monitor update is in progress. Setting monitor_pending_tx_signatures.");
62996328
self.context.monitor_pending_tx_signatures = holder_tx_signatures_opt;
6300-
return Ok(None);
6329+
return Ok((None, None));
63016330
}
63026331

6303-
Ok(holder_tx_signatures_opt)
6332+
if holder_tx_signatures_opt.is_some() {
6333+
self.context.channel_state.set_our_tx_signatures_sent();
6334+
}
6335+
6336+
self.context.channel_state = ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new());
6337+
Ok((funding_tx_opt, holder_tx_signatures_opt))
63046338
} else {
63056339
Err(ChannelError::Close((
63066340
"Unexpected tx_signatures. No funding transaction awaiting signatures".to_string(),
@@ -6560,6 +6594,9 @@ impl<SP: Deref> FundedChannel<SP> where
65606594
// MonitorUpdateInProgress (and we assume the user will never directly broadcast the funding
65616595
// transaction and waits for us to do it).
65626596
let tx_signatures = self.context.monitor_pending_tx_signatures.take();
6597+
if tx_signatures.is_some() {
6598+
self.context.channel_state.set_our_tx_signatures_sent();
6599+
}
65636600

65646601
if self.context.channel_state.is_peer_disconnected() {
65656602
self.context.monitor_pending_revoke_and_ack = false;
@@ -7028,7 +7065,7 @@ impl<SP: Deref> FundedChannel<SP> where
70287065
if session.unsigned_tx().compute_txid() == next_funding_txid {
70297066
debug_assert_eq!(session.unsigned_tx().compute_txid(), self.maybe_get_next_funding_txid().unwrap());
70307067

7031-
let commitment_update = if !session.counterparty_sent_tx_signatures() && msg.next_local_commitment_number == 0 {
7068+
let commitment_update = if !self.context.channel_state.is_their_tx_signatures_sent() && msg.next_local_commitment_number == 0 {
70327069
// if it has not received tx_signatures for that funding transaction AND
70337070
// if next_commitment_number is zero:
70347071
// MUST retransmit its commitment_signed for that funding transaction.
@@ -7047,10 +7084,10 @@ impl<SP: Deref> FundedChannel<SP> where
70477084
// if it has not received tx_signatures for that funding transaction AND
70487085
// if it has already received commitment_signed AND it should sign first, as specified in the tx_signatures requirements:
70497086
// MUST send its tx_signatures for that funding transaction.
7050-
!session.counterparty_sent_tx_signatures() && session.has_received_commitment_signed() && session.holder_sends_tx_signatures_first()
7087+
!self.context.channel_state.is_their_tx_signatures_sent() && session.has_received_commitment_signed() && session.holder_sends_tx_signatures_first()
70517088
// else if it has already received tx_signatures for that funding transaction:
70527089
// MUST send its tx_signatures for that funding transaction.
7053-
) || session.counterparty_sent_tx_signatures() {
7090+
) || self.context.channel_state.is_their_tx_signatures_sent() {
70547091
if self.context.channel_state.is_monitor_update_in_progress() {
70557092
// The `monitor_pending_tx_signatures` field should have already been set in `commitment_signed_initial_v2`
70567093
// if we were up first for signing and had a monitor update in progress, but check again just in case.
@@ -8424,9 +8461,9 @@ impl<SP: Deref> FundedChannel<SP> where
84248461
// If we've sent `commtiment_signed` for an interactively constructed transaction
84258462
// during a signing session, but have not received `tx_signatures` we MUST set `next_funding_txid`
84268463
// to the txid of that interactive transaction, else we MUST NOT set it.
8427-
if let Some(signing_session) = &self.interactive_tx_signing_session {
8464+
if self.context.channel_state.is_interactive_signing() {
84288465
// Since we have a signing_session, this implies we've sent an initial `commitment_signed`...
8429-
if !signing_session.counterparty_sent_tx_signatures() {
8466+
if !self.context.channel_state.is_their_tx_signatures_sent() {
84308467
// ...but we didn't receive a `tx_signatures` from the counterparty yet.
84318468
Some(self.funding_outpoint().txid)
84328469
} else {
@@ -9406,7 +9443,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
94069443

94079444
// Now that we're past error-generating stuff, update our local state:
94089445

9409-
self.context.channel_state = ChannelState::FundingNegotiated;
9446+
self.context.channel_state = ChannelState::FundingNegotiated(FundingNegotiatedFlags::new());
94109447
self.context.channel_id = ChannelId::v1_from_funding_outpoint(funding_txo);
94119448

94129449
// If the funding transaction is a coinbase transaction, we need to set the minimum depth to 100.
@@ -9523,7 +9560,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
95239560
if !self.funding.is_outbound() {
95249561
return Err((self, ChannelError::close("Received funding_signed for an inbound channel?".to_owned())));
95259562
}
9526-
if !matches!(self.context.channel_state, ChannelState::FundingNegotiated) {
9563+
if !matches!(self.context.channel_state, ChannelState::FundingNegotiated(_)) {
95279564
return Err((self, ChannelError::close("Received funding_signed in strange state!".to_owned())));
95289565
}
95299566
let mut holder_commitment_point = match self.unfunded_context.holder_commitment_point {
@@ -11251,11 +11288,12 @@ mod tests {
1125111288
#[test]
1125211289
fn test_channel_state_order() {
1125311290
use crate::ln::channel::NegotiatingFundingFlags;
11291+
use crate::ln::channel::FundingNegotiatedFlags;
1125411292
use crate::ln::channel::AwaitingChannelReadyFlags;
1125511293
use crate::ln::channel::ChannelReadyFlags;
1125611294

11257-
assert!(ChannelState::NegotiatingFunding(NegotiatingFundingFlags::new()) < ChannelState::FundingNegotiated);
11258-
assert!(ChannelState::FundingNegotiated < ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new()));
11295+
assert!(ChannelState::NegotiatingFunding(NegotiatingFundingFlags::new()) < ChannelState::FundingNegotiated(FundingNegotiatedFlags::new()));
11296+
assert!(ChannelState::FundingNegotiated(FundingNegotiatedFlags::new()) < ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new()));
1125911297
assert!(ChannelState::AwaitingChannelReady(AwaitingChannelReadyFlags::new()) < ChannelState::ChannelReady(ChannelReadyFlags::new()));
1126011298
assert!(ChannelState::ChannelReady(ChannelReadyFlags::new()) < ChannelState::ShutdownComplete);
1126111299
}

lightning/src/ln/channelmanager.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8586,14 +8586,14 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
85868586
match chan_entry.get_mut().as_funded_mut() {
85878587
Some(chan) => {
85888588
let logger = WithChannelContext::from(&self.logger, &chan.context, None);
8589-
let tx_signatures_opt = try_channel_entry!(self, peer_state, chan.tx_signatures(msg, &&logger), chan_entry);
8589+
let (funding_tx_opt, tx_signatures_opt) = try_channel_entry!(self, peer_state, chan.tx_signatures(msg, &&logger), chan_entry);
85908590
if let Some(tx_signatures) = tx_signatures_opt {
85918591
peer_state.pending_msg_events.push(MessageSendEvent::SendTxSignatures {
85928592
node_id: *counterparty_node_id,
85938593
msg: tx_signatures,
85948594
});
85958595
}
8596-
if let Some(ref funding_tx) = chan.context.unbroadcasted_funding(&chan.funding) {
8596+
if let Some(ref funding_tx) = funding_tx_opt {
85978597
self.tx_broadcaster.broadcast_transactions(&[funding_tx]);
85988598
{
85998599
let mut pending_events = self.pending_events.lock().unwrap();

lightning/src/ln/dual_funding_tests.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,13 +208,6 @@ fn do_test_v2_channel_establishment(session: V2ChannelEstablishmentTestSession)
208208
assert!(events.is_empty());
209209
nodes[1].chain_monitor.complete_sole_pending_chan_update(&channel_id);
210210

211-
let events = nodes[1].node.get_and_clear_pending_events();
212-
assert_eq!(events.len(), 1);
213-
match events[0] {
214-
Event::ChannelPending { channel_id: chan_id, .. } => assert_eq!(chan_id, channel_id),
215-
_ => panic!("Unexpected event"),
216-
};
217-
218211
let tx_signatures_msg = get_event_msg!(
219212
nodes[1],
220213
MessageSendEvent::SendTxSignatures,
@@ -236,6 +229,13 @@ fn do_test_v2_channel_establishment(session: V2ChannelEstablishmentTestSession)
236229
},
237230
);
238231

232+
let events = nodes[1].node.get_and_clear_pending_events();
233+
assert_eq!(events.len(), 1);
234+
match events[0] {
235+
Event::ChannelPending { channel_id: chan_id, .. } => assert_eq!(chan_id, channel_id),
236+
_ => panic!("Unexpected event"),
237+
};
238+
239239
// For an inbound channel V2 channel the transaction should be broadcast once receiving a
240240
// tx_signature and applying local tx_signatures:
241241
let broadcasted_txs = nodes[1].tx_broadcaster.txn_broadcast();

lightning/src/ln/interactivetxs.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,6 @@ impl ConstructedTransaction {
289289
#[derive(Debug, Clone, PartialEq)]
290290
pub(crate) struct InteractiveTxSigningSession {
291291
unsigned_tx: ConstructedTransaction,
292-
counterparty_sent_tx_signatures: bool,
293292
holder_sends_tx_signatures_first: bool,
294293
has_received_commitment_signed: bool,
295294
holder_tx_signatures: Option<TxSignatures>,
@@ -300,10 +299,6 @@ impl InteractiveTxSigningSession {
300299
&self.unsigned_tx
301300
}
302301

303-
pub fn counterparty_sent_tx_signatures(&self) -> bool {
304-
self.counterparty_sent_tx_signatures
305-
}
306-
307302
pub fn holder_sends_tx_signatures_first(&self) -> bool {
308303
self.holder_sends_tx_signatures_first
309304
}
@@ -325,14 +320,6 @@ impl InteractiveTxSigningSession {
325320
}
326321
}
327322

328-
pub fn get_tx_signatures(&self) -> Option<TxSignatures> {
329-
if self.has_received_commitment_signed {
330-
self.holder_tx_signatures.clone()
331-
} else {
332-
None
333-
}
334-
}
335-
336323
/// Handles a `tx_signatures` message received from the counterparty.
337324
///
338325
/// If the holder is required to send their `tx_signatures` message and these signatures have
@@ -351,7 +338,6 @@ impl InteractiveTxSigningSession {
351338
return Err(());
352339
}
353340
self.unsigned_tx.add_remote_witnesses(tx_signatures.witnesses.clone());
354-
self.counterparty_sent_tx_signatures = true;
355341

356342
let holder_tx_signatures = if !self.holder_sends_tx_signatures_first {
357343
self.holder_tx_signatures.clone()
@@ -1009,7 +995,6 @@ macro_rules! define_state_transitions {
1009995
unsigned_tx: tx,
1010996
has_received_commitment_signed: false,
1011997
holder_tx_signatures: None,
1012-
counterparty_sent_tx_signatures: false,
1013998
};
1014999
Ok(NegotiationComplete(signing_session))
10151000
}

0 commit comments

Comments
 (0)