add outbound_amount_forwarded_msat field to PaymentForwarded event
authorMarc Tyndel <mtyndel@squareup.com>
Tue, 28 Mar 2023 16:29:00 +0000 (12:29 -0400)
committerMarc Tyndel <mtyndel@squareup.com>
Wed, 29 Mar 2023 18:42:35 +0000 (14:42 -0400)
lightning/src/events/mod.rs
lightning/src/ln/channelmanager.rs
lightning/src/ln/functional_test_utils.rs
lightning/src/ln/functional_tests.rs

index cae92535078fe61b4ad5fefa4b9685a17f21b313..a96d36b645312e6efe854a8ddb4f272db3b94532 100644 (file)
@@ -603,6 +603,10 @@ pub enum Event {
                /// If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
                /// transaction.
                claim_from_onchain_tx: bool,
+               /// The final amount forwarded, in milli-satoshis, after the fee is deducted.
+               ///
+               /// The caveat described above the `fee_earned_msat` field applies here as well.
+               outbound_amount_forwarded_msat: Option<u64>,
        },
        /// Used to indicate that a channel with the given `channel_id` is ready to
        /// be used. This event is emitted either when the funding transaction has been confirmed
@@ -820,13 +824,17 @@ impl Writeable for Event {
                                        (8, expected_outbound_amount_msat, required),
                                });
                        }
-                       &Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
+                       &Event::PaymentForwarded {
+                               fee_earned_msat, prev_channel_id, claim_from_onchain_tx,
+                               next_channel_id, outbound_amount_forwarded_msat
+                       } => {
                                7u8.write(writer)?;
                                write_tlv_fields!(writer, {
                                        (0, fee_earned_msat, option),
                                        (1, prev_channel_id, option),
                                        (2, claim_from_onchain_tx, required),
                                        (3, next_channel_id, option),
+                                       (5, outbound_amount_forwarded_msat, option),
                                });
                        },
                        &Event::ChannelClosed { ref channel_id, ref user_channel_id, ref reason } => {
@@ -1078,13 +1086,18 @@ impl MaybeReadable for Event {
                                        let mut prev_channel_id = None;
                                        let mut claim_from_onchain_tx = false;
                                        let mut next_channel_id = None;
+                                       let mut outbound_amount_forwarded_msat = None;
                                        read_tlv_fields!(reader, {
                                                (0, fee_earned_msat, option),
                                                (1, prev_channel_id, option),
                                                (2, claim_from_onchain_tx, required),
                                                (3, next_channel_id, option),
+                                               (5, outbound_amount_forwarded_msat, option),
                                        });
-                                       Ok(Some(Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id }))
+                                       Ok(Some(Event::PaymentForwarded {
+                                               fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
+                                               outbound_amount_forwarded_msat
+                                       }))
                                };
                                f()
                        },
index c8adc721235470dc37bce5a9a2651fc8e74dc8ed..d6a203df16dabc294138efcf26151b197fd94d8a 100644 (file)
@@ -4184,6 +4184,7 @@ where
                                                                claim_from_onchain_tx: from_onchain,
                                                                prev_channel_id,
                                                                next_channel_id,
+                                                               outbound_amount_forwarded_msat: forwarded_htlc_value_msat,
                                                        }})
                                                } else { None }
                                        });
index 0221b1187c6937a7c618d59c695f39c817849e18..61b927c536fd1603957b9a5d51842e5abe6b7e84 100644 (file)
@@ -1780,7 +1780,10 @@ macro_rules! expect_payment_forwarded {
                let events = $node.node.get_and_clear_pending_events();
                assert_eq!(events.len(), 1);
                match events[0] {
-                       Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
+                       Event::PaymentForwarded {
+                               fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
+                               outbound_amount_forwarded_msat: _
+                       } => {
                                assert_eq!(fee_earned_msat, $expected_fee);
                                if fee_earned_msat.is_some() {
                                        // Is the event prev_channel_id in one of the channels between the two nodes?
index a6d3b271a19ee9a0ec60b1be5e0f6d8d438b5511..56586b0a29c569be57700a316e109e1bb76edb24 100644 (file)
@@ -2731,20 +2731,22 @@ fn test_htlc_on_chain_success() {
        }
        let chan_id = Some(chan_1.2);
        match forwarded_events[1] {
-               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
+               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
                        assert_eq!(fee_earned_msat, Some(1000));
                        assert_eq!(prev_channel_id, chan_id);
                        assert_eq!(claim_from_onchain_tx, true);
                        assert_eq!(next_channel_id, Some(chan_2.2));
+                       assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
                },
                _ => panic!()
        }
        match forwarded_events[2] {
-               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
+               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
                        assert_eq!(fee_earned_msat, Some(1000));
                        assert_eq!(prev_channel_id, chan_id);
                        assert_eq!(claim_from_onchain_tx, true);
                        assert_eq!(next_channel_id, Some(chan_2.2));
+                       assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
                },
                _ => panic!()
        }
@@ -4653,11 +4655,12 @@ fn test_onchain_to_onchain_claim() {
                _ => panic!("Unexpected event"),
        }
        match events[1] {
-               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
+               Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
                        assert_eq!(fee_earned_msat, Some(1000));
                        assert_eq!(prev_channel_id, Some(chan_1.2));
                        assert_eq!(claim_from_onchain_tx, true);
                        assert_eq!(next_channel_id, Some(chan_2.2));
+                       assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
                },
                _ => panic!("Unexpected event"),
        }