Merge pull request #2430 from TheBlueMatt/2023-07-116-bindings-part-1
[rust-lightning] / lightning / src / chain / channelmonitor.rs
index 36e3bc46bfcc40370519a3d906d06e9e90458bea..f98c0bcac8c0ef453d281b700272b8ac69dd4d06 100644 (file)
@@ -50,7 +50,7 @@ use crate::util::logger::Logger;
 use crate::util::ser::{Readable, ReadableArgs, RequiredWrapper, MaybeReadable, UpgradableRequired, Writer, Writeable, U48};
 use crate::util::byte_utils;
 use crate::events::{Event, EventHandler};
-use crate::events::bump_transaction::{AnchorDescriptor, HTLCDescriptor, BumpTransactionEvent};
+use crate::events::bump_transaction::{ChannelDerivationParameters, AnchorDescriptor, HTLCDescriptor, BumpTransactionEvent};
 
 use crate::prelude::*;
 use core::{cmp, mem};
@@ -262,7 +262,7 @@ impl_writeable_tlv_based!(HolderSignedTx, {
        (8, delayed_payment_key, required),
        (10, per_commitment_point, required),
        (12, feerate_per_kw, required),
-       (14, htlc_outputs, vec_type)
+       (14, htlc_outputs, required_vec)
 });
 
 impl HolderSignedTx {
@@ -538,15 +538,15 @@ impl ChannelMonitorUpdateStep {
 impl_writeable_tlv_based_enum_upgradable!(ChannelMonitorUpdateStep,
        (0, LatestHolderCommitmentTXInfo) => {
                (0, commitment_tx, required),
-               (1, claimed_htlcs, vec_type),
-               (2, htlc_outputs, vec_type),
+               (1, claimed_htlcs, optional_vec),
+               (2, htlc_outputs, required_vec),
                (4, nondust_htlc_sources, optional_vec),
        },
        (1, LatestCounterpartyCommitmentTXInfo) => {
                (0, commitment_txid, required),
                (2, commitment_number, required),
                (4, their_per_commitment_point, required),
-               (6, htlc_outputs, vec_type),
+               (6, htlc_outputs, required_vec),
        },
        (2, PaymentPreimage) => {
                (0, payment_preimage, required),
@@ -1071,12 +1071,12 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for ChannelMonitorImpl<Signe
 
                write_tlv_fields!(writer, {
                        (1, self.funding_spend_confirmed, option),
-                       (3, self.htlcs_resolved_on_chain, vec_type),
-                       (5, self.pending_monitor_events, vec_type),
+                       (3, self.htlcs_resolved_on_chain, required_vec),
+                       (5, self.pending_monitor_events, required_vec),
                        (7, self.funding_spend_seen, required),
                        (9, self.counterparty_node_id, option),
                        (11, self.confirmed_commitment_tx_counterparty_output, option),
-                       (13, self.spendable_txids_confirmed, vec_type),
+                       (13, self.spendable_txids_confirmed, required_vec),
                        (15, self.counterparty_fulfilled_htlcs, required),
                });
 
@@ -2611,8 +2611,11 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
                                                commitment_tx,
                                                commitment_tx_fee_satoshis,
                                                anchor_descriptor: AnchorDescriptor {
-                                                       channel_keys_id: self.channel_keys_id,
-                                                       channel_value_satoshis: self.channel_value_satoshis,
+                                                       channel_derivation_parameters: ChannelDerivationParameters {
+                                                               keys_id: self.channel_keys_id,
+                                                               value_satoshis: self.channel_value_satoshis,
+                                                               transaction_parameters: self.onchain_tx_handler.channel_transaction_parameters.clone(),
+                                                       },
                                                        outpoint: BitcoinOutPoint {
                                                                txid: commitment_txid,
                                                                vout: anchor_output_idx,
@@ -2627,11 +2630,16 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
                                        let mut htlc_descriptors = Vec::with_capacity(htlcs.len());
                                        for htlc in htlcs {
                                                htlc_descriptors.push(HTLCDescriptor {
-                                                       channel_keys_id: self.channel_keys_id,
-                                                       channel_value_satoshis: self.channel_value_satoshis,
-                                                       channel_parameters: self.onchain_tx_handler.channel_transaction_parameters.clone(),
+                                                       channel_derivation_parameters: ChannelDerivationParameters {
+                                                               keys_id: self.channel_keys_id,
+                                                               value_satoshis: self.channel_value_satoshis,
+                                                               transaction_parameters: self.onchain_tx_handler.channel_transaction_parameters.clone(),
+                                                       },
                                                        commitment_txid: htlc.commitment_txid,
                                                        per_commitment_number: htlc.per_commitment_number,
+                                                       per_commitment_point: self.onchain_tx_handler.signer.get_per_commitment_point(
+                                                               htlc.per_commitment_number, &self.onchain_tx_handler.secp_ctx,
+                                                       ),
                                                        htlc: htlc.htlc,
                                                        preimage: htlc.preimage,
                                                        counterparty_sig: htlc.counterparty_sig,
@@ -4112,12 +4120,12 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
                let mut counterparty_fulfilled_htlcs = Some(HashMap::new());
                read_tlv_fields!(reader, {
                        (1, funding_spend_confirmed, option),
-                       (3, htlcs_resolved_on_chain, vec_type),
-                       (5, pending_monitor_events, vec_type),
+                       (3, htlcs_resolved_on_chain, optional_vec),
+                       (5, pending_monitor_events, optional_vec),
                        (7, funding_spend_seen, option),
                        (9, counterparty_node_id, option),
                        (11, confirmed_commitment_tx_counterparty_output, option),
-                       (13, spendable_txids_confirmed, vec_type),
+                       (13, spendable_txids_confirmed, optional_vec),
                        (15, counterparty_fulfilled_htlcs, option),
                });