Skip to content

Commit 0ffa4b3

Browse files
authored
Merge pull request #2930 from jbesraa/Add-PaymentHash-to-Record
Add `PaymentHash` to `Record`
2 parents 8f1dc54 + fe7f548 commit 0ffa4b3

File tree

8 files changed

+178
-152
lines changed

8 files changed

+178
-152
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ where C::Target: chain::Filter,
301301
monitor_state: &MonitorHolder<ChannelSigner>
302302
) -> Result<(), ()> where FN: Fn(&ChannelMonitor<ChannelSigner>, &TransactionData) -> Vec<TransactionOutputs> {
303303
let monitor = &monitor_state.monitor;
304-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
304+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
305305
let mut txn_outputs;
306306
{
307307
txn_outputs = process(monitor, txdata);
@@ -599,15 +599,15 @@ where C::Target: chain::Filter,
599599
pub fn archive_fully_resolved_channel_monitors(&self) {
600600
let mut have_monitors_to_prune = false;
601601
for (_, monitor_holder) in self.monitors.read().unwrap().iter() {
602-
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor);
602+
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor, None);
603603
if monitor_holder.monitor.is_fully_resolved(&logger) {
604604
have_monitors_to_prune = true;
605605
}
606606
}
607607
if have_monitors_to_prune {
608608
let mut monitors = self.monitors.write().unwrap();
609609
monitors.retain(|funding_txo, monitor_holder| {
610-
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor);
610+
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor, None);
611611
if monitor_holder.monitor.is_fully_resolved(&logger) {
612612
log_info!(logger,
613613
"Archiving fully resolved ChannelMonitor for funding txo {}",
@@ -715,7 +715,7 @@ where C::Target: chain::Filter,
715715
P::Target: Persist<ChannelSigner>,
716716
{
717717
fn watch_channel(&self, funding_outpoint: OutPoint, monitor: ChannelMonitor<ChannelSigner>) -> Result<ChannelMonitorUpdateStatus, ()> {
718-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
718+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
719719
let mut monitors = self.monitors.write().unwrap();
720720
let entry = match monitors.entry(funding_outpoint) {
721721
hash_map::Entry::Occupied(_) => {
@@ -760,7 +760,7 @@ where C::Target: chain::Filter,
760760
let monitors = self.monitors.read().unwrap();
761761
match monitors.get(&funding_txo) {
762762
None => {
763-
let logger = WithContext::from(&self.logger, update.counterparty_node_id, Some(channel_id));
763+
let logger = WithContext::from(&self.logger, update.counterparty_node_id, Some(channel_id), None);
764764
log_error!(logger, "Failed to update channel monitor: no such monitor registered");
765765

766766
// We should never ever trigger this from within ChannelManager. Technically a
@@ -773,7 +773,7 @@ where C::Target: chain::Filter,
773773
},
774774
Some(monitor_state) => {
775775
let monitor = &monitor_state.monitor;
776-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
776+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
777777
log_trace!(logger, "Updating ChannelMonitor to id {} for channel {}", update.update_id, log_funding_info!(monitor));
778778
let update_res = monitor.update_monitor(update, &self.broadcaster, &self.fee_estimator, &self.logger);
779779

lightning/src/chain/channelmonitor.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,26 +1195,28 @@ pub(crate) struct WithChannelMonitor<'a, L: Deref> where L::Target: Logger {
11951195
logger: &'a L,
11961196
peer_id: Option<PublicKey>,
11971197
channel_id: Option<ChannelId>,
1198+
payment_hash: Option<PaymentHash>,
11981199
}
11991200

12001201
impl<'a, L: Deref> Logger for WithChannelMonitor<'a, L> where L::Target: Logger {
12011202
fn log(&self, mut record: Record) {
12021203
record.peer_id = self.peer_id;
12031204
record.channel_id = self.channel_id;
1205+
record.payment_hash = self.payment_hash;
12041206
self.logger.log(record)
12051207
}
12061208
}
12071209

12081210
impl<'a, L: Deref> WithChannelMonitor<'a, L> where L::Target: Logger {
1209-
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>) -> Self {
1210-
Self::from_impl(logger, &*monitor.inner.lock().unwrap())
1211+
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>, payment_hash: Option<PaymentHash>) -> Self {
1212+
Self::from_impl(logger, &*monitor.inner.lock().unwrap(), payment_hash)
12111213
}
12121214

1213-
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>) -> Self {
1215+
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>, payment_hash: Option<PaymentHash>) -> Self {
12141216
let peer_id = monitor_impl.counterparty_node_id;
12151217
let channel_id = Some(monitor_impl.channel_id());
12161218
WithChannelMonitor {
1217-
logger, peer_id, channel_id,
1219+
logger, peer_id, channel_id, payment_hash,
12181220
}
12191221
}
12201222
}
@@ -1356,7 +1358,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13561358
where L::Target: Logger
13571359
{
13581360
let mut inner = self.inner.lock().unwrap();
1359-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1361+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13601362
inner.provide_initial_counterparty_commitment_tx(txid,
13611363
htlc_outputs, commitment_number, their_cur_per_commitment_point, feerate_per_kw,
13621364
to_broadcaster_value_sat, to_countersignatory_value_sat, &logger);
@@ -1376,7 +1378,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13761378
logger: &L,
13771379
) where L::Target: Logger {
13781380
let mut inner = self.inner.lock().unwrap();
1379-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1381+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13801382
inner.provide_latest_counterparty_commitment_tx(
13811383
txid, htlc_outputs, commitment_number, their_per_commitment_point, &logger)
13821384
}
@@ -1404,7 +1406,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14041406
L::Target: Logger,
14051407
{
14061408
let mut inner = self.inner.lock().unwrap();
1407-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1409+
let logger = WithChannelMonitor::from_impl(logger, &*inner, Some(*payment_hash));
14081410
inner.provide_payment_preimage(
14091411
payment_hash, payment_preimage, broadcaster, fee_estimator, &logger)
14101412
}
@@ -1426,7 +1428,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14261428
L::Target: Logger,
14271429
{
14281430
let mut inner = self.inner.lock().unwrap();
1429-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1431+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
14301432
inner.update_monitor(updates, broadcaster, fee_estimator, &logger)
14311433
}
14321434

@@ -1461,7 +1463,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14611463
F::Target: chain::Filter, L::Target: Logger,
14621464
{
14631465
let lock = self.inner.lock().unwrap();
1464-
let logger = WithChannelMonitor::from_impl(logger, &*lock);
1466+
let logger = WithChannelMonitor::from_impl(logger, &*lock, None);
14651467
log_trace!(&logger, "Registering funding outpoint {}", &lock.get_funding_txo().0);
14661468
filter.register_tx(&lock.get_funding_txo().0.txid, &lock.get_funding_txo().1);
14671469
for (txid, outputs) in lock.get_outputs_to_watch().iter() {
@@ -1621,7 +1623,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16211623
{
16221624
let mut inner = self.inner.lock().unwrap();
16231625
let fee_estimator = LowerBoundedFeeEstimator::new(&**fee_estimator);
1624-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1626+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16251627
inner.queue_latest_holder_commitment_txn_for_broadcast(broadcaster, &fee_estimator, &logger);
16261628
}
16271629

@@ -1632,7 +1634,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16321634
pub fn unsafe_get_latest_holder_commitment_txn<L: Deref>(&self, logger: &L) -> Vec<Transaction>
16331635
where L::Target: Logger {
16341636
let mut inner = self.inner.lock().unwrap();
1635-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1637+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16361638
inner.unsafe_get_latest_holder_commitment_txn(&logger)
16371639
}
16381640

@@ -1662,7 +1664,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16621664
L::Target: Logger,
16631665
{
16641666
let mut inner = self.inner.lock().unwrap();
1665-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1667+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16661668
inner.block_connected(
16671669
header, txdata, height, broadcaster, fee_estimator, &logger)
16681670
}
@@ -1682,7 +1684,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16821684
L::Target: Logger,
16831685
{
16841686
let mut inner = self.inner.lock().unwrap();
1685-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1687+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16861688
inner.block_disconnected(
16871689
header, height, broadcaster, fee_estimator, &logger)
16881690
}
@@ -1710,7 +1712,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17101712
{
17111713
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17121714
let mut inner = self.inner.lock().unwrap();
1713-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1715+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17141716
inner.transactions_confirmed(
17151717
header, txdata, height, broadcaster, &bounded_fee_estimator, &logger)
17161718
}
@@ -1734,7 +1736,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17341736
{
17351737
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17361738
let mut inner = self.inner.lock().unwrap();
1737-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1739+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17381740
inner.transaction_unconfirmed(
17391741
txid, broadcaster, &bounded_fee_estimator, &logger
17401742
);
@@ -1762,7 +1764,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17621764
{
17631765
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17641766
let mut inner = self.inner.lock().unwrap();
1765-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1767+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17661768
inner.best_block_updated(
17671769
header, height, broadcaster, &bounded_fee_estimator, &logger
17681770
)
@@ -1802,7 +1804,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
18021804
{
18031805
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
18041806
let mut inner = self.inner.lock().unwrap();
1805-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1807+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18061808
let current_height = inner.best_block.height;
18071809
inner.onchain_tx_handler.rebroadcast_pending_claims(
18081810
current_height, FeerateStrategy::HighestOfPreviousOrNew, &broadcaster, &fee_estimator, &logger,
@@ -1821,7 +1823,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
18211823
{
18221824
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
18231825
let mut inner = self.inner.lock().unwrap();
1824-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1826+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18251827
let current_height = inner.best_block.height;
18261828
inner.onchain_tx_handler.rebroadcast_pending_claims(
18271829
current_height, FeerateStrategy::RetryPrevious, &broadcaster, &fee_estimator, &logger,
@@ -5260,7 +5262,8 @@ mod tests {
52605262
best_block, dummy_key, channel_id);
52615263

52625264
let chan_id = monitor.inner.lock().unwrap().channel_id();
5263-
let context_logger = WithChannelMonitor::from(&logger, &monitor);
5265+
let payment_hash = PaymentHash([1; 32]);
5266+
let context_logger = WithChannelMonitor::from(&logger, &monitor, Some(payment_hash));
52645267
log_error!(context_logger, "This is an error");
52655268
log_warn!(context_logger, "This is an error");
52665269
log_debug!(context_logger, "This is an error");

lightning/src/ln/channel.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -923,25 +923,28 @@ pub(super) struct WithChannelContext<'a, L: Deref> where L::Target: Logger {
923923
pub logger: &'a L,
924924
pub peer_id: Option<PublicKey>,
925925
pub channel_id: Option<ChannelId>,
926+
pub payment_hash: Option<PaymentHash>,
926927
}
927928

928929
impl<'a, L: Deref> Logger for WithChannelContext<'a, L> where L::Target: Logger {
929930
fn log(&self, mut record: Record) {
930931
record.peer_id = self.peer_id;
931932
record.channel_id = self.channel_id;
933+
record.payment_hash = self.payment_hash;
932934
self.logger.log(record)
933935
}
934936
}
935937

936938
impl<'a, 'b, L: Deref> WithChannelContext<'a, L>
937939
where L::Target: Logger {
938-
pub(super) fn from<S: Deref>(logger: &'a L, context: &'b ChannelContext<S>) -> Self
940+
pub(super) fn from<S: Deref>(logger: &'a L, context: &'b ChannelContext<S>, payment_hash: Option<PaymentHash>) -> Self
939941
where S::Target: SignerProvider
940942
{
941943
WithChannelContext {
942944
logger,
943945
peer_id: Some(context.counterparty_node_id),
944946
channel_id: Some(context.channel_id),
947+
payment_hash
945948
}
946949
}
947950
}
@@ -1571,7 +1574,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
15711574
L::Target: Logger,
15721575
SP::Target: SignerProvider,
15731576
{
1574-
let logger = WithContext::from(logger, Some(counterparty_node_id), Some(open_channel_fields.temporary_channel_id));
1577+
let logger = WithContext::from(logger, Some(counterparty_node_id), Some(open_channel_fields.temporary_channel_id), None);
15751578
let announced_channel = if (open_channel_fields.channel_flags & 1) == 1 { true } else { false };
15761579

15771580
let channel_value_satoshis = our_funding_satoshis.saturating_add(open_channel_fields.funding_satoshis);
@@ -7859,7 +7862,7 @@ impl<SP: Deref> InboundV1Channel<SP> where SP::Target: SignerProvider {
78597862
F::Target: FeeEstimator,
78607863
L::Target: Logger,
78617864
{
7862-
let logger = WithContext::from(logger, Some(counterparty_node_id), Some(msg.common_fields.temporary_channel_id));
7865+
let logger = WithContext::from(logger, Some(counterparty_node_id), Some(msg.common_fields.temporary_channel_id), None);
78637866

78647867
// First check the channel type is known, failing before we do anything else if we don't
78657868
// support this channel type.

0 commit comments

Comments
 (0)