Skip to content

Commit 15fc762

Browse files
committed
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 9d85c1b commit 15fc762

18 files changed

+292
-237
lines changed

fuzz/src/chanmon_consistency.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1138,7 +1138,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
11381138
break;
11391139
}
11401140
out.locked_write(format!("Delivering commitment_signed from node {} to node {}.\n", $node, idx).as_bytes());
1141-
dest.handle_commitment_signed(nodes[$node].get_our_node_id(), &commitment_signed);
1141+
dest.handle_commitment_signed_batch(nodes[$node].get_our_node_id(), &commitment_signed);
11421142
break;
11431143
}
11441144
}

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
@@ -262,7 +262,7 @@ fn do_test_async_commitment_signature_for_commitment_signed_revoke_and_ack(enabl
262262
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::GetPerCommitmentPoint);
263263
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::ReleaseCommitmentSecret);
264264
dst.disable_channel_signer_op(&src.node.get_our_node_id(), &chan_id, SignerOp::SignCounterpartyCommitment);
265-
dst.node.handle_commitment_signed(src.node.get_our_node_id(), &payment_event.commitment_msg);
265+
dst.node.handle_commitment_signed_batch(src.node.get_our_node_id(), &payment_event.commitment_msg);
266266
check_added_monitors(dst, 1);
267267

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

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

586586
if test_case != UnblockSignerAcrossDisconnectCase::BeforeMonitorRestored {
@@ -696,7 +696,7 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
696696
if monitor_update_failure {
697697
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
698698
}
699-
nodes[0].node.handle_commitment_signed(nodes[1].node.get_our_node_id(), commitment_signed);
699+
nodes[0].node.handle_commitment_signed_batch(nodes[1].node.get_our_node_id(), commitment_signed);
700700
if monitor_update_failure {
701701
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
702702
} else {
@@ -766,7 +766,7 @@ fn do_test_async_commitment_signature_ordering(monitor_update_failure: bool) {
766766

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

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

785-
nodes[1].node.handle_commitment_signed(nodes[0].node.get_our_node_id(), &as_commitment_signed.commitment_signed);
785+
nodes[1].node.handle_commitment_signed_batch(nodes[0].node.get_our_node_id(), &as_commitment_signed.commitment_signed);
786786
let bs_second_revoke_and_ack = get_event_msg!(nodes[1], MessageSendEvent::SendRevokeAndACK, nodes[0].node.get_our_node_id());
787787
// No commitment_signed so get_event_msg's assert(len == 1) passes
788788
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)