Skip to content

Commit 8fd9083

Browse files
Persist update_add sender skimmed fee in Channel
1 parent 37fc3d7 commit 8fd9083

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
@@ -224,6 +224,7 @@ struct OutboundHTLCOutput {
224224
payment_hash: PaymentHash,
225225
state: OutboundHTLCState,
226226
source: HTLCSource,
227+
skimmed_fee_msat: Option<u64>,
227228
}
228229

229230
/// See AwaitingRemoteRevoke ChannelState for more info
@@ -235,6 +236,8 @@ enum HTLCUpdateAwaitingACK {
235236
payment_hash: PaymentHash,
236237
source: HTLCSource,
237238
onion_routing_packet: msgs::OnionPacket,
239+
// The extra fee we're skimming off the top of this HTLC.
240+
skimmed_fee_msat: Option<u64>,
238241
},
239242
ClaimHTLC {
240243
payment_preimage: PaymentPreimage,
@@ -6063,6 +6066,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
60636066
cltv_expiry,
60646067
source,
60656068
onion_routing_packet,
6069+
skimmed_fee_msat: None,
60666070
});
60676071
return Ok(None);
60686072
}
@@ -6074,6 +6078,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
60746078
cltv_expiry,
60756079
state: OutboundHTLCState::LocalAnnounced(Box::new(onion_routing_packet.clone())),
60766080
source,
6081+
skimmed_fee_msat: None,
60776082
});
60786083

60796084
let res = msgs::UpdateAddHTLC {
@@ -6593,18 +6598,23 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for Channel<Signer> {
65936598
reason.write(writer)?;
65946599
}
65956600
}
6601+
htlc.skimmed_fee_msat.write(writer)?;
65966602
}
65976603

65986604
(self.holding_cell_htlc_updates.len() as u64).write(writer)?;
65996605
for update in self.holding_cell_htlc_updates.iter() {
66006606
match update {
6601-
&HTLCUpdateAwaitingACK::AddHTLC { ref amount_msat, ref cltv_expiry, ref payment_hash, ref source, ref onion_routing_packet } => {
6607+
&HTLCUpdateAwaitingACK::AddHTLC {
6608+
ref amount_msat, ref cltv_expiry, ref payment_hash, ref source, ref onion_routing_packet,
6609+
ref skimmed_fee_msat,
6610+
} => {
66026611
0u8.write(writer)?;
66036612
amount_msat.write(writer)?;
66046613
cltv_expiry.write(writer)?;
66056614
payment_hash.write(writer)?;
66066615
source.write(writer)?;
66076616
onion_routing_packet.write(writer)?;
6617+
skimmed_fee_msat.write(writer)?;
66086618
},
66096619
&HTLCUpdateAwaitingACK::ClaimHTLC { ref payment_preimage, ref htlc_id } => {
66106620
1u8.write(writer)?;
@@ -6881,6 +6891,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68816891
},
68826892
_ => return Err(DecodeError::InvalidValue),
68836893
},
6894+
skimmed_fee_msat: Readable::read(reader)?,
68846895
});
68856896
}
68866897

@@ -6894,6 +6905,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68946905
payment_hash: Readable::read(reader)?,
68956906
source: Readable::read(reader)?,
68966907
onion_routing_packet: Readable::read(reader)?,
6908+
skimmed_fee_msat: Readable::read(reader)?,
68976909
},
68986910
1 => HTLCUpdateAwaitingACK::ClaimHTLC {
68996911
payment_preimage: Readable::read(reader)?,
@@ -7453,7 +7465,8 @@ mod tests {
74537465
session_priv: SecretKey::from_slice(&hex::decode("0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff").unwrap()[..]).unwrap(),
74547466
first_hop_htlc_msat: 548,
74557467
payment_id: PaymentId([42; 32]),
7456-
}
7468+
},
7469+
skimmed_fee_msat: None,
74577470
});
74587471

74597472
// Make sure when Node A calculates their local commitment transaction, none of the HTLCs pass
@@ -7987,6 +8000,7 @@ mod tests {
79878000
payment_hash: PaymentHash([0; 32]),
79888001
state: OutboundHTLCState::Committed,
79898002
source: HTLCSource::dummy(),
8003+
skimmed_fee_msat: None,
79908004
};
79918005
out.payment_hash.0 = Sha256::hash(&hex::decode("0202020202020202020202020202020202020202020202020202020202020202").unwrap()).into_inner();
79928006
out
@@ -7999,6 +8013,7 @@ mod tests {
79998013
payment_hash: PaymentHash([0; 32]),
80008014
state: OutboundHTLCState::Committed,
80018015
source: HTLCSource::dummy(),
8016+
skimmed_fee_msat: None,
80028017
};
80038018
out.payment_hash.0 = Sha256::hash(&hex::decode("0303030303030303030303030303030303030303030303030303030303030303").unwrap()).into_inner();
80048019
out
@@ -8400,6 +8415,7 @@ mod tests {
84008415
payment_hash: PaymentHash([0; 32]),
84018416
state: OutboundHTLCState::Committed,
84028417
source: HTLCSource::dummy(),
8418+
skimmed_fee_msat: None,
84038419
};
84048420
out.payment_hash.0 = Sha256::hash(&hex::decode("0505050505050505050505050505050505050505050505050505050505050505").unwrap()).into_inner();
84058421
out
@@ -8412,6 +8428,7 @@ mod tests {
84128428
payment_hash: PaymentHash([0; 32]),
84138429
state: OutboundHTLCState::Committed,
84148430
source: HTLCSource::dummy(),
8431+
skimmed_fee_msat: None,
84158432
};
84168433
out.payment_hash.0 = Sha256::hash(&hex::decode("0505050505050505050505050505050505050505050505050505050505050505").unwrap()).into_inner();
84178434
out

0 commit comments

Comments
 (0)