Merge pull request #2400 from TheBlueMatt/2023-07-kill-vec_type
[rust-lightning] / lightning / src / events / mod.rs
index 3d8f890861cb69292431975025f3869c3dc8e409..a5a20e7d42b3e016d5ea219f1427cd3dba0e67c2 100644 (file)
 //! future, as well as generate and broadcast funding transactions handle payment preimages and a
 //! few other things.
 
-#[cfg(anchors)]
 pub mod bump_transaction;
 
-#[cfg(anchors)]
 pub use bump_transaction::BumpTransactionEvent;
 
 use crate::sign::SpendableOutputDescriptor;
@@ -33,8 +31,6 @@ use crate::util::string::UntrustedString;
 use crate::routing::router::{BlindedTail, Path, RouteHop, RouteParameters};
 
 use bitcoin::{PackedLockTime, Transaction, OutPoint};
-#[cfg(anchors)]
-use bitcoin::{Txid, TxIn, TxOut, Witness};
 use bitcoin::blockdata::script::Script;
 use bitcoin::hashes::Hash;
 use bitcoin::hashes::sha256::Hash as Sha256;
@@ -387,7 +383,8 @@ pub enum Event {
                ///
                /// Payments received on LDK versions prior to 0.0.115 will have this field unset.
                onion_fields: Option<RecipientOnionFields>,
-               /// The value, in thousandths of a satoshi, that this payment is claimable for.
+               /// The value, in thousandths of a satoshi, that this payment is claimable for. May be greater
+               /// than the invoice amount.
                ///
                /// May be less than the invoice amount if [`ChannelConfig::accept_underpaying_htlcs`] is set
                /// and the previous hop took an extra fee.
@@ -446,7 +443,8 @@ pub enum Event {
                /// The payment hash of the claimed payment. Note that LDK will not stop you from
                /// registering duplicate payment hashes for inbound payments.
                payment_hash: PaymentHash,
-               /// The value, in thousandths of a satoshi, that this payment is for.
+               /// The value, in thousandths of a satoshi, that this payment is for. May be greater than the
+               /// invoice amount.
                amount_msat: u64,
                /// The purpose of the claimed payment, i.e. whether the payment was for an invoice or a
                /// spontaneous payment.
@@ -832,12 +830,14 @@ pub enum Event {
                /// Destination of the HTLC that failed to be processed.
                failed_next_destination: HTLCDestination,
        },
-       #[cfg(anchors)]
        /// Indicates that a transaction originating from LDK needs to have its fee bumped. This event
        /// requires confirmed external funds to be readily available to spend.
        ///
-       /// LDK does not currently generate this event. It is limited to the scope of channels with
-       /// anchor outputs, which will be introduced in a future release.
+       /// LDK does not currently generate this event unless the
+       /// [`ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx`] config flag is set to true.
+       /// It is limited to the scope of channels with anchor outputs.
+       ///
+       /// [`ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx`]: crate::util::config::ChannelHandshakeConfig::negotiate_anchors_zero_fee_htlc_tx
        BumpTransaction(BumpTransactionEvent),
 }
 
@@ -874,7 +874,7 @@ impl Writeable for Event {
                                        (3, via_channel_id, option),
                                        (4, amount_msat, required),
                                        (5, via_user_channel_id, option),
-                                       (6, 0u64, required), // user_payment_id required for compatibility with 0.0.103 and earlier
+                                       // Type 6 was `user_payment_id` on 0.0.103 and earlier
                                        (7, claim_deadline, option),
                                        (8, payment_preimage, option),
                                        (9, onion_fields, option),
@@ -909,7 +909,7 @@ impl Writeable for Event {
                                        (2, payment_failed_permanently, required),
                                        (3, false, required), // all_paths_failed in LDK versions prior to 0.0.114
                                        (4, path.blinded_tail, option),
-                                       (5, path.hops, vec_type),
+                                       (5, path.hops, required_vec),
                                        (7, short_channel_id, option),
                                        (9, None::<RouteParameters>, option), // retry in LDK versions prior to 0.0.115
                                        (11, payment_id, option),
@@ -977,7 +977,7 @@ impl Writeable for Event {
                                write_tlv_fields!(writer, {
                                        (0, payment_id, required),
                                        (2, payment_hash, option),
-                                       (4, path.hops, vec_type),
+                                       (4, path.hops, required_vec),
                                        (6, path.blinded_tail, option),
                                })
                        },
@@ -1008,7 +1008,7 @@ impl Writeable for Event {
                                write_tlv_fields!(writer, {
                                        (0, payment_id, required),
                                        (2, payment_hash, required),
-                                       (4, path.hops, vec_type),
+                                       (4, path.hops, required_vec),
                                        (6, path.blinded_tail, option),
                                })
                        },
@@ -1017,7 +1017,7 @@ impl Writeable for Event {
                                write_tlv_fields!(writer, {
                                        (0, payment_id, required),
                                        (2, payment_hash, required),
-                                       (4, path.hops, vec_type),
+                                       (4, path.hops, required_vec),
                                        (6, short_channel_id, option),
                                        (8, path.blinded_tail, option),
                                })
@@ -1029,7 +1029,6 @@ impl Writeable for Event {
                                        (2, failed_next_destination, required),
                                })
                        },
-                       #[cfg(anchors)]
                        &Event::BumpTransaction(ref event)=> {
                                27u8.write(writer)?;
                                match event {
@@ -1080,7 +1079,7 @@ impl MaybeReadable for Event {
                                        let mut amount_msat = 0;
                                        let mut counterparty_skimmed_fee_msat_opt = None;
                                        let mut receiver_node_id = None;
-                                       let mut _user_payment_id = None::<u64>; // For compatibility with 0.0.103 and earlier
+                                       let mut _user_payment_id = None::<u64>; // Used in 0.0.103 and earlier, no longer written in 0.0.116+.
                                        let mut via_channel_id = None;
                                        let mut claim_deadline = None;
                                        let mut via_user_channel_id = None;
@@ -1163,7 +1162,9 @@ impl MaybeReadable for Event {
                                                (1, network_update, upgradable_option),
                                                (2, payment_failed_permanently, required),
                                                (4, blinded_tail, option),
-                                               (5, path, vec_type),
+                                               // Added as a part of LDK 0.0.101 and always filled in since.
+                                               // Defaults to an empty Vec, though likely should have been `Option`al.
+                                               (5, path, optional_vec),
                                                (7, short_channel_id, option),
                                                (11, payment_id, option),
                                                (13, failure_opt, upgradable_option),
@@ -1280,13 +1281,13 @@ impl MaybeReadable for Event {
                                        _init_and_read_tlv_fields!(reader, {
                                                (0, payment_id, required),
                                                (2, payment_hash, option),
-                                               (4, path, vec_type),
+                                               (4, path, required_vec),
                                                (6, blinded_tail, option),
                                        });
                                        Ok(Some(Event::PaymentPathSuccessful {
                                                payment_id: payment_id.0.unwrap(),
                                                payment_hash,
-                                               path: Path { hops: path.unwrap(), blinded_tail },
+                                               path: Path { hops: path, blinded_tail },
                                        }))
                                };
                                f()
@@ -1339,13 +1340,13 @@ impl MaybeReadable for Event {
                                        _init_and_read_tlv_fields!(reader, {
                                                (0, payment_id, required),
                                                (2, payment_hash, required),
-                                               (4, path, vec_type),
+                                               (4, path, required_vec),
                                                (6, blinded_tail, option),
                                        });
                                        Ok(Some(Event::ProbeSuccessful {
                                                payment_id: payment_id.0.unwrap(),
                                                payment_hash: payment_hash.0.unwrap(),
-                                               path: Path { hops: path.unwrap(), blinded_tail },
+                                               path: Path { hops: path, blinded_tail },
                                        }))
                                };
                                f()
@@ -1355,14 +1356,14 @@ impl MaybeReadable for Event {
                                        _init_and_read_tlv_fields!(reader, {
                                                (0, payment_id, required),
                                                (2, payment_hash, required),
-                                               (4, path, vec_type),
+                                               (4, path, required_vec),
                                                (6, short_channel_id, option),
                                                (8, blinded_tail, option),
                                        });
                                        Ok(Some(Event::ProbeFailed {
                                                payment_id: payment_id.0.unwrap(),
                                                payment_hash: payment_hash.0.unwrap(),
-                                               path: Path { hops: path.unwrap(), blinded_tail },
+                                               path: Path { hops: path, blinded_tail },
                                                short_channel_id,
                                        }))
                                };