Skip to content

Commit ba71d6e

Browse files
committed
f: set multipath_trampoline_data
1 parent aeeba82 commit ba71d6e

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lightning/src/ln/onion_utils.rs

+12-3
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ use bitcoin::secp256k1::ecdh::SharedSecret;
3333
use bitcoin::secp256k1::{PublicKey, Scalar, Secp256k1, SecretKey};
3434

3535
use crate::io::{Cursor, Read};
36-
use crate::ln::msgs::OutboundOnionPayload;
36+
use crate::ln::msgs::{FinalOnionHopData, OutboundOnionPayload};
3737
#[allow(unused_imports)]
3838
use crate::prelude::*;
3939
use core::ops::Deref;
40+
use types::payment::PaymentSecret;
4041

4142
pub(crate) struct OnionKeys {
4243
#[cfg(test)]
@@ -1400,11 +1401,19 @@ pub fn create_payment_onion<T: secp256k1::Signing>(
14001401
})?;
14011402

14021403
match last_payload {
1403-
OutboundOnionPayload::Receive { .. } => {
1404+
OutboundOnionPayload::Receive { payment_data, .. } => {
1405+
let multipath_trampoline_data = payment_data.map(|d| {
1406+
let trampoline_payment_secret = Sha256::hash(&d.payment_secret.0).to_byte_array();
1407+
let total_msat = d.total_msat + path.hops.last().map_or(0, |h| h.fee_msat);
1408+
FinalOnionHopData {
1409+
payment_secret: PaymentSecret(trampoline_payment_secret),
1410+
total_msat,
1411+
}
1412+
});
14041413
onion_payloads.push(OutboundOnionPayload::TrampolineEntrypoint {
14051414
amt_to_forward: outer_total_msat,
14061415
outgoing_cltv_value: outer_starting_htlc_offset,
1407-
multipath_trampoline_data: None,
1416+
multipath_trampoline_data,
14081417
trampoline_packet,
14091418
});
14101419
},

0 commit comments

Comments
 (0)