Skip to content

Commit 783e818

Browse files
authored
Merge pull request #2136 from marctyndel/2023-03-paymentforwarded-expose-amount-forwarded
Expose amount forwarded in `PaymentForwarded` event
2 parents a9534fe + ee2cb8e commit 783e818

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

lightning/src/events/mod.rs

+15-2
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,10 @@ pub enum Event {
603603
/// If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
604604
/// transaction.
605605
claim_from_onchain_tx: bool,
606+
/// The final amount forwarded, in milli-satoshis, after the fee is deducted.
607+
///
608+
/// The caveat described above the `fee_earned_msat` field applies here as well.
609+
outbound_amount_forwarded_msat: Option<u64>,
606610
},
607611
/// Used to indicate that a channel with the given `channel_id` is ready to
608612
/// be used. This event is emitted either when the funding transaction has been confirmed
@@ -820,13 +824,17 @@ impl Writeable for Event {
820824
(8, expected_outbound_amount_msat, required),
821825
});
822826
}
823-
&Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
827+
&Event::PaymentForwarded {
828+
fee_earned_msat, prev_channel_id, claim_from_onchain_tx,
829+
next_channel_id, outbound_amount_forwarded_msat
830+
} => {
824831
7u8.write(writer)?;
825832
write_tlv_fields!(writer, {
826833
(0, fee_earned_msat, option),
827834
(1, prev_channel_id, option),
828835
(2, claim_from_onchain_tx, required),
829836
(3, next_channel_id, option),
837+
(5, outbound_amount_forwarded_msat, option),
830838
});
831839
},
832840
&Event::ChannelClosed { ref channel_id, ref user_channel_id, ref reason } => {
@@ -1078,13 +1086,18 @@ impl MaybeReadable for Event {
10781086
let mut prev_channel_id = None;
10791087
let mut claim_from_onchain_tx = false;
10801088
let mut next_channel_id = None;
1089+
let mut outbound_amount_forwarded_msat = None;
10811090
read_tlv_fields!(reader, {
10821091
(0, fee_earned_msat, option),
10831092
(1, prev_channel_id, option),
10841093
(2, claim_from_onchain_tx, required),
10851094
(3, next_channel_id, option),
1095+
(5, outbound_amount_forwarded_msat, option),
10861096
});
1087-
Ok(Some(Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id }))
1097+
Ok(Some(Event::PaymentForwarded {
1098+
fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
1099+
outbound_amount_forwarded_msat
1100+
}))
10881101
};
10891102
f()
10901103
},

lightning/src/ln/channelmanager.rs

+1
Original file line numberDiff line numberDiff line change
@@ -4184,6 +4184,7 @@ where
41844184
claim_from_onchain_tx: from_onchain,
41854185
prev_channel_id,
41864186
next_channel_id,
4187+
outbound_amount_forwarded_msat: forwarded_htlc_value_msat,
41874188
}})
41884189
} else { None }
41894190
});

lightning/src/ln/functional_test_utils.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -1780,7 +1780,10 @@ macro_rules! expect_payment_forwarded {
17801780
let events = $node.node.get_and_clear_pending_events();
17811781
assert_eq!(events.len(), 1);
17821782
match events[0] {
1783-
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
1783+
Event::PaymentForwarded {
1784+
fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
1785+
outbound_amount_forwarded_msat: _
1786+
} => {
17841787
assert_eq!(fee_earned_msat, $expected_fee);
17851788
if fee_earned_msat.is_some() {
17861789
// Is the event prev_channel_id in one of the channels between the two nodes?

lightning/src/ln/functional_tests.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -2731,20 +2731,22 @@ fn test_htlc_on_chain_success() {
27312731
}
27322732
let chan_id = Some(chan_1.2);
27332733
match forwarded_events[1] {
2734-
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
2734+
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
27352735
assert_eq!(fee_earned_msat, Some(1000));
27362736
assert_eq!(prev_channel_id, chan_id);
27372737
assert_eq!(claim_from_onchain_tx, true);
27382738
assert_eq!(next_channel_id, Some(chan_2.2));
2739+
assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
27392740
},
27402741
_ => panic!()
27412742
}
27422743
match forwarded_events[2] {
2743-
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
2744+
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
27442745
assert_eq!(fee_earned_msat, Some(1000));
27452746
assert_eq!(prev_channel_id, chan_id);
27462747
assert_eq!(claim_from_onchain_tx, true);
27472748
assert_eq!(next_channel_id, Some(chan_2.2));
2749+
assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
27482750
},
27492751
_ => panic!()
27502752
}
@@ -4653,11 +4655,12 @@ fn test_onchain_to_onchain_claim() {
46534655
_ => panic!("Unexpected event"),
46544656
}
46554657
match events[1] {
4656-
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
4658+
Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, outbound_amount_forwarded_msat } => {
46574659
assert_eq!(fee_earned_msat, Some(1000));
46584660
assert_eq!(prev_channel_id, Some(chan_1.2));
46594661
assert_eq!(claim_from_onchain_tx, true);
46604662
assert_eq!(next_channel_id, Some(chan_2.2));
4663+
assert_eq!(outbound_amount_forwarded_msat, Some(3000000));
46614664
},
46624665
_ => panic!("Unexpected event"),
46634666
}

0 commit comments

Comments
 (0)