Skip to content

Commit ca3c3b5

Browse files
Persist update_add sender skimmed fee in Channel
This will always be None as of this commit, but once we start setting the field it will break backwards compat with LDK versions prior to 0.0.116.
1 parent 73513f1 commit ca3c3b5

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

lightning/src/ln/channel.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ struct OutboundHTLCOutput {
222222
payment_hash: PaymentHash,
223223
state: OutboundHTLCState,
224224
source: HTLCSource,
225+
skimmed_fee_msat: Option<u64>,
225226
}
226227

227228
/// See AwaitingRemoteRevoke ChannelState for more info
@@ -233,6 +234,8 @@ enum HTLCUpdateAwaitingACK {
233234
payment_hash: PaymentHash,
234235
source: HTLCSource,
235236
onion_routing_packet: msgs::OnionPacket,
237+
// The extra fee we're skimming off the top of this HTLC.
238+
skimmed_fee_msat: Option<u64>,
236239
},
237240
ClaimHTLC {
238241
payment_preimage: PaymentPreimage,
@@ -6003,6 +6006,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
60036006
cltv_expiry,
60046007
source,
60056008
onion_routing_packet,
6009+
skimmed_fee_msat: None,
60066010
});
60076011
return Ok(None);
60086012
}
@@ -6014,6 +6018,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
60146018
cltv_expiry,
60156019
state: OutboundHTLCState::LocalAnnounced(Box::new(onion_routing_packet.clone())),
60166020
source,
6021+
skimmed_fee_msat: None,
60176022
});
60186023

60196024
let res = msgs::UpdateAddHTLC {
@@ -6533,18 +6538,23 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for Channel<Signer> {
65336538
reason.write(writer)?;
65346539
}
65356540
}
6541+
htlc.skimmed_fee_msat.write(writer)?;
65366542
}
65376543

65386544
(self.holding_cell_htlc_updates.len() as u64).write(writer)?;
65396545
for update in self.holding_cell_htlc_updates.iter() {
65406546
match update {
6541-
&HTLCUpdateAwaitingACK::AddHTLC { ref amount_msat, ref cltv_expiry, ref payment_hash, ref source, ref onion_routing_packet } => {
6547+
&HTLCUpdateAwaitingACK::AddHTLC {
6548+
ref amount_msat, ref cltv_expiry, ref payment_hash, ref source, ref onion_routing_packet,
6549+
ref skimmed_fee_msat,
6550+
} => {
65426551
0u8.write(writer)?;
65436552
amount_msat.write(writer)?;
65446553
cltv_expiry.write(writer)?;
65456554
payment_hash.write(writer)?;
65466555
source.write(writer)?;
65476556
onion_routing_packet.write(writer)?;
6557+
skimmed_fee_msat.write(writer)?;
65486558
},
65496559
&HTLCUpdateAwaitingACK::ClaimHTLC { ref payment_preimage, ref htlc_id } => {
65506560
1u8.write(writer)?;
@@ -6821,6 +6831,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68216831
},
68226832
_ => return Err(DecodeError::InvalidValue),
68236833
},
6834+
skimmed_fee_msat: Readable::read(reader)?,
68246835
});
68256836
}
68266837

@@ -6834,6 +6845,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68346845
payment_hash: Readable::read(reader)?,
68356846
source: Readable::read(reader)?,
68366847
onion_routing_packet: Readable::read(reader)?,
6848+
skimmed_fee_msat: Readable::read(reader)?,
68376849
},
68386850
1 => HTLCUpdateAwaitingACK::ClaimHTLC {
68396851
payment_preimage: Readable::read(reader)?,
@@ -7393,7 +7405,8 @@ mod tests {
73937405
session_priv: SecretKey::from_slice(&hex::decode("0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff").unwrap()[..]).unwrap(),
73947406
first_hop_htlc_msat: 548,
73957407
payment_id: PaymentId([42; 32]),
7396-
}
7408+
},
7409+
skimmed_fee_msat: None,
73977410
});
73987411

73997412
// Make sure when Node A calculates their local commitment transaction, none of the HTLCs pass
@@ -7927,6 +7940,7 @@ mod tests {
79277940
payment_hash: PaymentHash([0; 32]),
79287941
state: OutboundHTLCState::Committed,
79297942
source: HTLCSource::dummy(),
7943+
skimmed_fee_msat: None,
79307944
};
79317945
out.payment_hash.0 = Sha256::hash(&hex::decode("0202020202020202020202020202020202020202020202020202020202020202").unwrap()).into_inner();
79327946
out
@@ -7939,6 +7953,7 @@ mod tests {
79397953
payment_hash: PaymentHash([0; 32]),
79407954
state: OutboundHTLCState::Committed,
79417955
source: HTLCSource::dummy(),
7956+
skimmed_fee_msat: None,
79427957
};
79437958
out.payment_hash.0 = Sha256::hash(&hex::decode("0303030303030303030303030303030303030303030303030303030303030303").unwrap()).into_inner();
79447959
out
@@ -8340,6 +8355,7 @@ mod tests {
83408355
payment_hash: PaymentHash([0; 32]),
83418356
state: OutboundHTLCState::Committed,
83428357
source: HTLCSource::dummy(),
8358+
skimmed_fee_msat: None,
83438359
};
83448360
out.payment_hash.0 = Sha256::hash(&hex::decode("0505050505050505050505050505050505050505050505050505050505050505").unwrap()).into_inner();
83458361
out
@@ -8352,6 +8368,7 @@ mod tests {
83528368
payment_hash: PaymentHash([0; 32]),
83538369
state: OutboundHTLCState::Committed,
83548370
source: HTLCSource::dummy(),
8371+
skimmed_fee_msat: None,
83558372
};
83568373
out.payment_hash.0 = Sha256::hash(&hex::decode("0505050505050505050505050505050505050505050505050505050505050505").unwrap()).into_inner();
83578374
out

0 commit comments

Comments
 (0)