Skip to content

Commit 7294548

Browse files
Persist update_add sender skimmed fee in Channel
1 parent 360150f commit 7294548

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)