Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2db5c60

Browse files
committedMar 12, 2025··
Send commitment_signed batch for splicing
A FundedChannel may have more than one pending FundingScope during splicing, one for the splice attempt and one or more for any RBF attempts. When this is the case, send a commitment_signed message for each FundingScope and include the necessary batch information (i.e., batch_size and funding_txid) to the counterparty.
1 parent 482b28a commit 2db5c60

17 files changed

+278
-232
lines changed
 

‎lightning/src/chain/chainmonitor.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1008,20 +1008,20 @@ mod tests {
10081008
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
10091009
nodes[0].node.handle_update_fulfill_htlc(nodes[1].node.get_our_node_id(), &updates.update_fulfill_htlcs[0]);
10101010
expect_payment_sent(&nodes[0], payment_preimage_1, None, false, false);
1011-
nodes[0].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), &updates.commitment_signed);
1011+
nodes[0].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), &updates.commitment_signed);
10121012
check_added_monitors!(nodes[0], 1);
10131013
let (as_first_raa, as_first_update) = get_revoke_commit_msgs!(nodes[0], nodes[1].node.get_our_node_id());
10141014

10151015
nodes[1].node.handle_revoke_and_ack(nodes[0].node.get_our_node_id(), &as_first_raa);
10161016
check_added_monitors!(nodes[1], 1);
10171017
let bs_second_updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
1018-
nodes[1].node.handle_commitment_signed(nodes[0].node.get_our_node_id(), &as_first_update);
1018+
nodes[1].node.handle_commitment_signed_batch(nodes[0].node.get_our_node_id(), &as_first_update);
10191019
check_added_monitors!(nodes[1], 1);
10201020
let bs_first_raa = get_event_msg!(nodes[1], MessageSendEvent::SendRevokeAndACK, nodes[0].node.get_our_node_id());
10211021

10221022
nodes[0].node.handle_update_fulfill_htlc(nodes[1].node.get_our_node_id(), &bs_second_updates.update_fulfill_htlcs[0]);
10231023
expect_payment_sent(&nodes[0], payment_preimage_2, None, false, false);
1024-
nodes[0].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), &bs_second_updates.commitment_signed);
1024+
nodes[0].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), &bs_second_updates.commitment_signed);
10251025
check_added_monitors!(nodes[0], 1);
10261026
nodes[0].node.handle_revoke_and_ack(nodes[1].node.get_our_node_id(), &bs_first_raa);
10271027
expect_payment_path_successful!(nodes[0]);
@@ -1030,7 +1030,7 @@ mod tests {
10301030

10311031
nodes[1].node.handle_revoke_and_ack(nodes[0].node.get_our_node_id(), &as_second_raa);
10321032
check_added_monitors!(nodes[1], 1);
1033-
nodes[1].node.handle_commitment_signed(nodes[0].node.get_our_node_id(), &as_second_update);
1033+
nodes[1].node.handle_commitment_signed_batch(nodes[0].node.get_our_node_id(), &as_second_update);
10341034
check_added_monitors!(nodes[1], 1);
10351035
let bs_second_raa = get_event_msg!(nodes[1], MessageSendEvent::SendRevokeAndACK, nodes[0].node.get_our_node_id());
10361036

‎lightning/src/ln/async_signer_tests.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ fn do_test_async_commitment_signature_for_commitment_signed_revoke_and_ack(enabl
263263
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::GetPerCommitmentPoint);
264264
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::ReleaseCommitmentSecret);
265265
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::SignCounterpartyCommitment);
266-
dst.node.handle_commitment_signed(src.node.get_our_node_id(), &payment_event.commitment_msg);
266+
dst.node.handle_commitment_signed_batch(src.node.get_our_node_id(), &payment_event.commitment_msg);
267267
check_added_monitors(dst, 1);
268268

269269
let mut enabled_signer_ops = new_hash_set();
@@ -457,7 +457,7 @@ fn do_test_async_raa_peer_disconnect(test_case: UnblockSignerAcrossDisconnectCas
457457
// Mark dst's signer as unavailable and handle src's commitment_signed: while dst won't yet have a
458458
// `commitment_signed` of its own to offer, it should publish a `revoke_and_ack`.
459459
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, block_raa_signer_op);
460-
dst.node.handle_commitment_signed(src.node.get_our_node_id(), &payment_event.commitment_msg);
460+
dst.node.handle_commitment_signed_batch(src.node.get_our_node_id(), &payment_event.commitment_msg);
461461
check_added_monitors(dst, 1);
462462

463463
let events = dst.node.get_and_clear_pending_msg_events();
@@ -581,7 +581,7 @@ fn do_test_async_commitment_signature_peer_disconnect(test_case: UnblockSignerAc
581581
// Mark dst's signer as unavailable and handle src's commitment_signed: while dst won't yet have a
582582
// `commitment_signed` of its own to offer, it should publish a `revoke_and_ack`.
583583
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::SignCounterpartyCommitment);
584-
dst.node.handle_commitment_signed(src.node.get_our_node_id(), &payment_event.commitment_msg);
584+
dst.node.handle_commitment_signed_batch(src.node.get_our_node_id(), &payment_event.commitment_msg);
585585
check_added_monitors(dst, 1);
586586

587587
if test_case != UnblockSignerAcrossDisconnectCase::BeforeMonitorRestored {
@@ -697,7 +697,7 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
697697
if monitor_update_failure {
698698
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
699699
}
700-
nodes[0].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), commitment_signed);
700+
nodes[0].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), commitment_signed);
701701
if monitor_update_failure {
702702
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
703703
} else {
@@ -767,7 +767,7 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
767767

768768
// Now that everything is restored, get the CS + RAA and handle them.
769769
nodes[1].node.handle_update_add_htlc(nodes[0].node.get_our_node_id(), &as_resp.2.as_ref().unwrap().update_add_htlcs[0]);
770-
nodes[1].node.handle_commitment_signed(nodes[0].node.get_our_node_id(), &as_resp.2.as_ref().unwrap().commitment_signed);
770+
nodes[1].node.handle_commitment_signed_batch(nodes[0].node.get_our_node_id(), &as_resp.2.as_ref().unwrap().commitment_signed);
771771
nodes[1].node.handle_revoke_and_ack(nodes[0].node.get_our_node_id(), as_resp.1.as_ref().unwrap());
772772
let (bs_revoke_and_ack, bs_second_commitment_signed) = get_revoke_commit_msgs(&nodes[1], &nodes[0].node.get_our_node_id());
773773
check_added_monitors!(nodes[1], 2);
@@ -778,12 +778,12 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
778778
let as_commitment_signed = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());
779779
check_added_monitors!(nodes[0], 1);
780780

781-
nodes[0].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), &bs_second_commitment_signed);
781+
nodes[0].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), &bs_second_commitment_signed);
782782
let as_revoke_and_ack = get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id());
783783
// No commitment_signed so get_event_msg's assert(len == 1) passes
784784
check_added_monitors!(nodes[0], 1);
785785

786-
nodes[1].node.handle_commitment_signed(nodes[0].node.get_our_node_id(), &as_commitment_signed.commitment_signed);
786+
nodes[1].node.handle_commitment_signed_batch(nodes[0].node.get_our_node_id(), &as_commitment_signed.commitment_signed);
787787
let bs_second_revoke_and_ack = get_event_msg!(nodes[1], MessageSendEvent::SendRevokeAndACK, nodes[0].node.get_our_node_id());
788788
// No commitment_signed so get_event_msg's assert(len == 1) passes
789789
check_added_monitors!(nodes[1], 1);

‎lightning/src/ln/blinded_payment_tests.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ fn do_multi_hop_receiver_fail(check: ReceiveCheckFail) {
10081008
let node_1_shutdown = get_event_msg!(nodes[1], MessageSendEvent::SendShutdown, nodes[2].node.get_our_node_id());
10091009

10101010
nodes[2].node.handle_update_add_htlc(nodes[1].node.get_our_node_id(), &payment_event_1_2.msgs[0]);
1011-
nodes[2].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), &payment_event_1_2.commitment_msg);
1011+
nodes[2].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), &payment_event_1_2.commitment_msg);
10121012
check_added_monitors!(nodes[2], 1);
10131013

10141014
nodes[2].node.handle_shutdown(nodes[1].node.get_our_node_id(), &node_1_shutdown);

0 commit comments

Comments
 (0)
Please sign in to comment.