Skip to content

Commit 0160e54

Browse files
committed
Rename FundedChannel::holder_commitment_point
The previous commitment point will be tracked in an upcoming commit. Rename existing HolderCommitmentPoint fields to avoid ambiguity.
1 parent 40a55f4 commit 0160e54

File tree

1 file changed

+80
-69
lines changed

1 file changed

+80
-69
lines changed

lightning/src/ln/channel.rs

Lines changed: 80 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,7 +1790,7 @@ where
17901790
&mut funding,
17911791
&mut signing_session,
17921792
true,
1793-
chan.holder_commitment_point.transaction_number(),
1793+
chan.next_holder_commitment_point.transaction_number(),
17941794
&&logger,
17951795
)?;
17961796

@@ -1851,7 +1851,7 @@ where
18511851
pending_funding: vec![],
18521852
context: chan.context,
18531853
interactive_tx_signing_session: chan.interactive_tx_signing_session,
1854-
holder_commitment_point: initial_holder_commitment_point,
1854+
next_holder_commitment_point: initial_holder_commitment_point,
18551855
#[cfg(splicing)]
18561856
pending_splice: None,
18571857
};
@@ -6065,7 +6065,10 @@ where
60656065
///
60666066
/// This field is cleared once our counterparty sends a `channel_ready`.
60676067
pub interactive_tx_signing_session: Option<InteractiveTxSigningSession>,
6068-
holder_commitment_point: HolderCommitmentPoint,
6068+
6069+
/// The commitment point used for the next commitment transaction.
6070+
next_holder_commitment_point: HolderCommitmentPoint,
6071+
60696072
/// Info about an in-progress, pending splice (if any), on the pre-splice channel
60706073
#[cfg(splicing)]
60716074
pending_splice: Option<PendingSplice>,
@@ -6944,12 +6947,12 @@ where
69446947
return Err(ChannelError::Close((msg.to_owned(), reason)));
69456948
}
69466949

6947-
let holder_commitment_point = &mut self.holder_commitment_point.clone();
6948-
self.context.assert_no_commitment_advancement(holder_commitment_point.transaction_number(), "initial commitment_signed");
6950+
let next_holder_commitment_point = &mut self.next_holder_commitment_point.clone();
6951+
self.context.assert_no_commitment_advancement(next_holder_commitment_point.transaction_number(), "initial commitment_signed");
69496952

69506953
let (channel_monitor, _) = self.initial_commitment_signed(
6951-
self.context.channel_id(), msg.signature, holder_commitment_point, best_block, signer_provider, logger)?;
6952-
self.holder_commitment_point = *holder_commitment_point;
6954+
self.context.channel_id(), msg.signature, next_holder_commitment_point, best_block, signer_provider, logger)?;
6955+
self.next_holder_commitment_point = *next_holder_commitment_point;
69536956

69546957
log_info!(logger, "Received initial commitment_signed from peer for channel {}", &self.context.channel_id());
69556958

@@ -6996,7 +6999,7 @@ where
69966999
.expect("Funding must exist for negotiated pending splice");
69977000
let (holder_commitment_tx, _) = self.context.validate_commitment_signed(
69987001
pending_splice_funding,
6999-
&self.holder_commitment_point,
7002+
&self.next_holder_commitment_point,
70007003
msg,
70017004
logger,
70027005
)?;
@@ -7082,7 +7085,12 @@ where
70827085

70837086
let update = self
70847087
.context
7085-
.validate_commitment_signed(&self.funding, &self.holder_commitment_point, msg, logger)
7088+
.validate_commitment_signed(
7089+
&self.funding,
7090+
&self.next_holder_commitment_point,
7091+
msg,
7092+
logger,
7093+
)
70867094
.map(|(commitment_tx, htlcs_included)| {
70877095
let (nondust_htlc_sources, dust_htlcs) =
70887096
Self::get_commitment_htlc_data(&htlcs_included);
@@ -7146,7 +7154,7 @@ where
71467154
})?;
71477155
let (commitment_tx, htlcs_included) = self.context.validate_commitment_signed(
71487156
funding,
7149-
&self.holder_commitment_point,
7157+
&self.next_holder_commitment_point,
71507158
msg,
71517159
logger,
71527160
)?;
@@ -7205,7 +7213,7 @@ where
72057213
L::Target: Logger,
72067214
{
72077215
if self
7208-
.holder_commitment_point
7216+
.next_holder_commitment_point
72097217
.advance(&self.context.holder_signer, &self.context.secp_ctx, logger)
72107218
.is_err()
72117219
{
@@ -8389,9 +8397,9 @@ where
83898397
/// blocked.
83908398
#[rustfmt::skip]
83918399
pub fn signer_maybe_unblocked<L: Deref>(&mut self, logger: &L) -> SignerResumeUpdates where L::Target: Logger {
8392-
if !self.holder_commitment_point.can_advance() {
8400+
if !self.next_holder_commitment_point.can_advance() {
83938401
log_trace!(logger, "Attempting to update holder per-commitment point...");
8394-
self.holder_commitment_point.try_resolve_pending(&self.context.holder_signer, &self.context.secp_ctx, logger);
8402+
self.next_holder_commitment_point.try_resolve_pending(&self.context.holder_signer, &self.context.secp_ctx, logger);
83958403
}
83968404
let funding_signed = if self.context.signer_pending_funding && !self.funding.is_outbound() {
83978405
let commitment_data = self.context.build_commitment_transaction(&self.funding,
@@ -8486,30 +8494,30 @@ where
84868494

84878495
#[rustfmt::skip]
84888496
fn get_last_revoke_and_ack<L: Deref>(&mut self, logger: &L) -> Option<msgs::RevokeAndACK> where L::Target: Logger {
8489-
debug_assert!(self.holder_commitment_point.transaction_number() <= INITIAL_COMMITMENT_NUMBER - 2);
8490-
self.holder_commitment_point.try_resolve_pending(&self.context.holder_signer, &self.context.secp_ctx, logger);
8497+
debug_assert!(self.next_holder_commitment_point.transaction_number() <= INITIAL_COMMITMENT_NUMBER - 2);
8498+
self.next_holder_commitment_point.try_resolve_pending(&self.context.holder_signer, &self.context.secp_ctx, logger);
84918499
let per_commitment_secret = self.context.holder_signer.as_ref()
8492-
.release_commitment_secret(self.holder_commitment_point.transaction_number() + 2).ok();
8500+
.release_commitment_secret(self.next_holder_commitment_point.transaction_number() + 2).ok();
84938501
if let Some(per_commitment_secret) = per_commitment_secret {
8494-
if self.holder_commitment_point.can_advance() {
8502+
if self.next_holder_commitment_point.can_advance() {
84958503
self.context.signer_pending_revoke_and_ack = false;
84968504
return Some(msgs::RevokeAndACK {
84978505
channel_id: self.context.channel_id,
84988506
per_commitment_secret,
8499-
next_per_commitment_point: self.holder_commitment_point.point(),
8507+
next_per_commitment_point: self.next_holder_commitment_point.point(),
85008508
#[cfg(taproot)]
85018509
next_local_nonce: None,
85028510
})
85038511
}
85048512
}
8505-
if !self.holder_commitment_point.can_advance() {
8513+
if !self.next_holder_commitment_point.can_advance() {
85068514
log_trace!(logger, "Last revoke-and-ack pending in channel {} for sequence {} because the next per-commitment point is not available",
8507-
&self.context.channel_id(), self.holder_commitment_point.transaction_number());
8515+
&self.context.channel_id(), self.next_holder_commitment_point.transaction_number());
85088516
}
85098517
if per_commitment_secret.is_none() {
85108518
log_trace!(logger, "Last revoke-and-ack pending in channel {} for sequence {} because the next per-commitment secret for {} is not available",
8511-
&self.context.channel_id(), self.holder_commitment_point.transaction_number(),
8512-
self.holder_commitment_point.transaction_number() + 2);
8519+
&self.context.channel_id(), self.next_holder_commitment_point.transaction_number(),
8520+
self.next_holder_commitment_point.transaction_number() + 2);
85138521
}
85148522
// Technically if HolderCommitmentPoint::can_advance is false,
85158523
// we have a commitment point ready to send in an RAA, however we
@@ -8518,7 +8526,7 @@ where
85188526
// RAA here is a convenient way to make sure that post-funding
85198527
// we're only ever waiting on one commitment point at a time.
85208528
log_trace!(logger, "Last revoke-and-ack pending in channel {} for sequence {} because the next per-commitment point is not available",
8521-
&self.context.channel_id(), self.holder_commitment_point.transaction_number());
8529+
&self.context.channel_id(), self.next_holder_commitment_point.transaction_number());
85228530
self.context.signer_pending_revoke_and_ack = true;
85238531
None
85248532
}
@@ -8666,7 +8674,7 @@ where
86668674
return Err(ChannelError::close("Peer sent an invalid channel_reestablish to force close in a non-standard way".to_owned()));
86678675
}
86688676

8669-
let our_commitment_transaction = INITIAL_COMMITMENT_NUMBER - self.holder_commitment_point.transaction_number() - 1;
8677+
let our_commitment_transaction = INITIAL_COMMITMENT_NUMBER - self.next_holder_commitment_point.transaction_number() - 1;
86708678
if msg.next_remote_commitment_number > 0 {
86718679
let expected_point = self.context.holder_signer.as_ref()
86728680
.get_per_commitment_point(INITIAL_COMMITMENT_NUMBER - msg.next_remote_commitment_number + 1, &self.context.secp_ctx)
@@ -8768,7 +8776,7 @@ where
87688776
let is_awaiting_remote_revoke = self.context.channel_state.is_awaiting_remote_revoke();
87698777
let next_counterparty_commitment_number = INITIAL_COMMITMENT_NUMBER - self.context.cur_counterparty_commitment_transaction_number + if is_awaiting_remote_revoke { 1 } else { 0 };
87708778

8771-
let channel_ready = if msg.next_local_commitment_number == 1 && INITIAL_COMMITMENT_NUMBER - self.holder_commitment_point.transaction_number() == 1 {
8779+
let channel_ready = if msg.next_local_commitment_number == 1 && INITIAL_COMMITMENT_NUMBER - self.next_holder_commitment_point.transaction_number() == 1 {
87728780
// We should never have to worry about MonitorUpdateInProgress resending ChannelReady
87738781
self.get_channel_ready(logger)
87748782
} else { None };
@@ -9593,7 +9601,7 @@ where
95939601
}
95949602

95959603
pub fn get_cur_holder_commitment_transaction_number(&self) -> u64 {
9596-
self.holder_commitment_point.transaction_number() + 1
9604+
self.next_holder_commitment_point.transaction_number() + 1
95979605
}
95989606

95999607
pub fn get_cur_counterparty_commitment_transaction_number(&self) -> u64 {
@@ -9717,7 +9725,7 @@ where
97179725
debug_assert!(self.context.minimum_depth.unwrap_or(1) > 0);
97189726
return true;
97199727
}
9720-
if self.holder_commitment_point.transaction_number() == INITIAL_COMMITMENT_NUMBER - 1 &&
9728+
if self.next_holder_commitment_point.transaction_number() == INITIAL_COMMITMENT_NUMBER - 1 &&
97219729
self.context.cur_counterparty_commitment_transaction_number == INITIAL_COMMITMENT_NUMBER - 1 {
97229730
// If we're a 0-conf channel, we'll move beyond AwaitingChannelReady immediately even while
97239731
// waiting for the initial monitor persistence. Thus, we check if our commitment
@@ -9851,11 +9859,11 @@ where
98519859
fn get_channel_ready<L: Deref>(
98529860
&mut self, logger: &L
98539861
) -> Option<msgs::ChannelReady> where L::Target: Logger {
9854-
if self.holder_commitment_point.can_advance() {
9862+
if self.next_holder_commitment_point.can_advance() {
98559863
self.context.signer_pending_channel_ready = false;
98569864
Some(msgs::ChannelReady {
98579865
channel_id: self.context.channel_id(),
9858-
next_per_commitment_point: self.holder_commitment_point.point(),
9866+
next_per_commitment_point: self.next_holder_commitment_point.point(),
98599867
short_channel_id_alias: Some(self.context.outbound_scid_alias),
98609868
})
98619869
} else {
@@ -10527,8 +10535,8 @@ where
1052710535
assert_ne!(self.context.cur_counterparty_commitment_transaction_number, INITIAL_COMMITMENT_NUMBER);
1052810536
// This is generally the first function which gets called on any given channel once we're
1052910537
// up and running normally. Thus, we take this opportunity to attempt to resolve the
10530-
// `holder_commitment_point` to get any keys which we are currently missing.
10531-
self.holder_commitment_point.try_resolve_pending(
10538+
// `next_holder_commitment_point` to get any keys which we are currently missing.
10539+
self.next_holder_commitment_point.try_resolve_pending(
1053210540
&self.context.holder_signer, &self.context.secp_ctx, logger,
1053310541
);
1053410542
// Prior to static_remotekey, my_current_per_commitment_point was critical to claiming
@@ -10558,7 +10566,7 @@ where
1055810566

1055910567
// next_local_commitment_number is the next commitment_signed number we expect to
1056010568
// receive (indicating if they need to resend one that we missed).
10561-
next_local_commitment_number: INITIAL_COMMITMENT_NUMBER - self.holder_commitment_point.transaction_number(),
10569+
next_local_commitment_number: INITIAL_COMMITMENT_NUMBER - self.next_holder_commitment_point.transaction_number(),
1056210570
// We have to set next_remote_commitment_number to the next revoke_and_ack we expect to
1056310571
// receive, however we track it by the next commitment number for a remote transaction
1056410572
// (which is one further, as they always revoke previous commitment transaction, not
@@ -12055,7 +12063,7 @@ where
1205512063
pending_funding: vec![],
1205612064
context: self.context,
1205712065
interactive_tx_signing_session: None,
12058-
holder_commitment_point: initial_holder_commitment_point,
12066+
next_holder_commitment_point: initial_holder_commitment_point,
1205912067
#[cfg(splicing)]
1206012068
pending_splice: None,
1206112069
};
@@ -12341,7 +12349,7 @@ where
1234112349
pending_funding: vec![],
1234212350
context: self.context,
1234312351
interactive_tx_signing_session: None,
12344-
holder_commitment_point: initial_holder_commitment_point,
12352+
next_holder_commitment_point: initial_holder_commitment_point,
1234512353
#[cfg(splicing)]
1234612354
pending_splice: None,
1234712355
};
@@ -12869,7 +12877,7 @@ where
1286912877
}
1287012878
self.context.destination_script.write(writer)?;
1287112879

12872-
self.holder_commitment_point.transaction_number().write(writer)?;
12880+
self.next_holder_commitment_point.transaction_number().write(writer)?;
1287312881
self.context.cur_counterparty_commitment_transaction_number.write(writer)?;
1287412882
self.funding.value_to_self_msat.write(writer)?;
1287512883

@@ -13201,8 +13209,9 @@ where
1320113209
let is_manual_broadcast = Some(self.context.is_manual_broadcast);
1320213210

1320313211
// `HolderCommitmentPoint::point` will become optional when async signing is implemented.
13204-
let holder_commitment_point = Some(self.holder_commitment_point.point());
13205-
let holder_commitment_point_next_advance = self.holder_commitment_point.next_point();
13212+
let next_holder_commitment_point = Some(self.next_holder_commitment_point.point());
13213+
let next_holder_commitment_point_next_advance =
13214+
self.next_holder_commitment_point.next_point();
1320613215

1320713216
write_tlv_fields!(writer, {
1320813217
(0, self.context.announcement_sigs, option),
@@ -13240,8 +13249,8 @@ where
1324013249
(39, pending_outbound_blinding_points, optional_vec),
1324113250
(41, holding_cell_blinding_points, optional_vec),
1324213251
(43, malformed_htlcs, optional_vec), // Added in 0.0.119
13243-
(45, holder_commitment_point, option),
13244-
(47, holder_commitment_point_next_advance, option),
13252+
(45, next_holder_commitment_point, option),
13253+
(47, next_holder_commitment_point_next_advance, option),
1324513254
(49, self.context.local_initiated_shutdown, option), // Added in 0.0.122
1324613255
(51, is_manual_broadcast, option), // Added in 0.0.124
1324713256
(53, funding_tx_broadcast_safe_event_emitted, option), // Added in 0.0.124
@@ -13298,7 +13307,7 @@ where
1329813307
};
1329913308
let destination_script = Readable::read(reader)?;
1330013309

13301-
let holder_commitment_transaction_number = Readable::read(reader)?;
13310+
let next_holder_commitment_transaction_number = Readable::read(reader)?;
1330213311
let cur_counterparty_commitment_transaction_number = Readable::read(reader)?;
1330313312
let value_to_self_msat = Readable::read(reader)?;
1330413313

@@ -13601,8 +13610,8 @@ where
1360113610
let mut malformed_htlcs: Option<Vec<(u64, u16, [u8; 32])>> = None;
1360213611
let mut monitor_pending_update_adds: Option<Vec<msgs::UpdateAddHTLC>> = None;
1360313612

13604-
let mut holder_commitment_point_opt: Option<PublicKey> = None;
13605-
let mut holder_commitment_point_next_advance_opt: Option<PublicKey> = None;
13613+
let mut next_holder_commitment_point_opt: Option<PublicKey> = None;
13614+
let mut next_holder_commitment_point_next_advance_opt: Option<PublicKey> = None;
1360613615
let mut is_manual_broadcast = None;
1360713616

1360813617
let mut pending_funding = Some(Vec::new());
@@ -13642,8 +13651,8 @@ where
1364213651
(39, pending_outbound_blinding_points_opt, optional_vec),
1364313652
(41, holding_cell_blinding_points_opt, optional_vec),
1364413653
(43, malformed_htlcs, optional_vec), // Added in 0.0.119
13645-
(45, holder_commitment_point_opt, option),
13646-
(47, holder_commitment_point_next_advance_opt, option),
13654+
(45, next_holder_commitment_point_opt, option),
13655+
(47, next_holder_commitment_point_next_advance_opt, option),
1364713656
(49, local_initiated_shutdown, option),
1364813657
(51, is_manual_broadcast, option),
1364913658
(53, funding_tx_broadcast_safe_event_emitted, option),
@@ -13831,31 +13840,33 @@ where
1383113840
// If we're restoring this channel for the first time after an upgrade, then we require that the
1383213841
// signer be available so that we can immediately populate the current commitment point. Channel
1383313842
// restoration will fail if this is not possible.
13834-
let holder_commitment_point =
13835-
match (holder_commitment_point_opt, holder_commitment_point_next_advance_opt) {
13836-
(Some(point), next_point) => HolderCommitmentPoint {
13837-
transaction_number: holder_commitment_transaction_number,
13838-
point,
13839-
next_point,
13840-
},
13841-
(_, _) => {
13842-
let point = holder_signer.get_per_commitment_point(holder_commitment_transaction_number, &secp_ctx)
13843+
let next_holder_commitment_point = match (
13844+
next_holder_commitment_point_opt,
13845+
next_holder_commitment_point_next_advance_opt,
13846+
) {
13847+
(Some(point), next_point) => HolderCommitmentPoint {
13848+
transaction_number: next_holder_commitment_transaction_number,
13849+
point,
13850+
next_point,
13851+
},
13852+
(_, _) => {
13853+
let point = holder_signer.get_per_commitment_point(next_holder_commitment_transaction_number, &secp_ctx)
1384313854
.expect("Must be able to derive the current commitment point upon channel restoration");
13844-
let next_point = holder_signer
13845-
.get_per_commitment_point(
13846-
holder_commitment_transaction_number - 1,
13847-
&secp_ctx,
13848-
)
13849-
.expect(
13850-
"Must be able to derive the next commitment point upon channel restoration",
13851-
);
13852-
HolderCommitmentPoint {
13853-
transaction_number: holder_commitment_transaction_number,
13854-
point,
13855-
next_point: Some(next_point),
13856-
}
13857-
},
13858-
};
13855+
let next_point = holder_signer
13856+
.get_per_commitment_point(
13857+
next_holder_commitment_transaction_number - 1,
13858+
&secp_ctx,
13859+
)
13860+
.expect(
13861+
"Must be able to derive the next commitment point upon channel restoration",
13862+
);
13863+
HolderCommitmentPoint {
13864+
transaction_number: next_holder_commitment_transaction_number,
13865+
point,
13866+
next_point: Some(next_point),
13867+
}
13868+
},
13869+
};
1385913870

1386013871
Ok(FundedChannel {
1386113872
funding: FundingScope {
@@ -13994,7 +14005,7 @@ where
1399414005
is_holder_quiescence_initiator: None,
1399514006
},
1399614007
interactive_tx_signing_session,
13997-
holder_commitment_point,
14008+
next_holder_commitment_point,
1399814009
#[cfg(splicing)]
1399914010
pending_splice: None,
1400014011
})

0 commit comments

Comments
 (0)