From fe25bbb44ea879e6b84e0cd6f62fd53058d77417 Mon Sep 17 00:00:00 2001 From: Arik Sosman Date: Wed, 29 Mar 2023 15:21:30 -0700 Subject: [PATCH] Update the `CommitmentSigned` message for Taproot support. --- lightning/src/ln/channel.rs | 2 ++ lightning/src/ln/functional_tests.rs | 8 ++++++-- lightning/src/ln/msgs.rs | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lightning/src/ln/channel.rs b/lightning/src/ln/channel.rs index 43604c191..e2b3fb066 100644 --- a/lightning/src/ln/channel.rs +++ b/lightning/src/ln/channel.rs @@ -5923,6 +5923,8 @@ impl Channel { channel_id: self.channel_id, signature, htlc_signatures, + #[cfg(taproot)] + partial_signature_with_nonce: None, }, (counterparty_commitment_txid, commitment_stats.htlcs_included))) } diff --git a/lightning/src/ln/functional_tests.rs b/lightning/src/ln/functional_tests.rs index 56586b0a2..af547b3af 100644 --- a/lightning/src/ln/functional_tests.rs +++ b/lightning/src/ln/functional_tests.rs @@ -735,7 +735,9 @@ fn test_update_fee_that_funder_cannot_afford() { let commit_signed_msg = msgs::CommitmentSigned { channel_id: chan.2, signature: res.0, - htlc_signatures: res.1 + htlc_signatures: res.1, + #[cfg(taproot)] + partial_signature_with_nonce: None, }; let update_fee = msgs::UpdateFee { @@ -1455,7 +1457,9 @@ fn test_fee_spike_violation_fails_htlc() { let commit_signed_msg = msgs::CommitmentSigned { channel_id: chan.2, signature: res.0, - htlc_signatures: res.1 + htlc_signatures: res.1, + #[cfg(taproot)] + partial_signature_with_nonce: None, }; // Send the commitment_signed message to the nodes[1]. diff --git a/lightning/src/ln/msgs.rs b/lightning/src/ln/msgs.rs index 5e51fc0a9..61e18648a 100644 --- a/lightning/src/ln/msgs.rs +++ b/lightning/src/ln/msgs.rs @@ -426,6 +426,9 @@ pub struct CommitmentSigned { pub signature: Signature, /// Signatures on the HTLC transactions pub htlc_signatures: Vec, + #[cfg(taproot)] + /// The partial Taproot signature on the commitment transaction + pub partial_signature_with_nonce: Option, } /// A [`revoke_and_ack`] message to be sent to or received from a peer. @@ -1402,12 +1405,22 @@ impl_writeable!(ClosingSignedFeeRange, { max_fee_satoshis }); +#[cfg(not(taproot))] impl_writeable_msg!(CommitmentSigned, { channel_id, signature, htlc_signatures }, {}); +#[cfg(taproot)] +impl_writeable_msg!(CommitmentSigned, { + channel_id, + signature, + htlc_signatures +}, { + (2, partial_signature_with_nonce, option) +}); + impl_writeable!(DecodedOnionErrorPacket, { hmac, failuremsg, @@ -2713,6 +2726,8 @@ mod tests { channel_id: [2; 32], signature: sig_1, htlc_signatures: if htlcs { vec![sig_2, sig_3, sig_4] } else { Vec::new() }, + #[cfg(taproot)] + partial_signature_with_nonce: None, }; let encoded_value = commitment_signed.encode(); let mut target_value = hex::decode("0202020202020202020202020202020202020202020202020202020202020202d977cb9b53d93a6ff64bb5f1e158b4094b66e798fb12911168a3ccdf80a83096340a6a95da0ae8d9f776528eecdbb747eb6b545495a4319ed5378e35b21e073a").unwrap(); -- 2.39.5