Commit graph

4183 commits

Author SHA1 Message Date
jbesraa
a1d15ac192
Add source and target fn's to CandidateRouteHop
We add `CandidateRouteHop::source` and
    `CandidateRouteHop::source` functions to point
    to current and next hops in route respectively.
    As we have now `source` and `target`
    available in `CandidateRouteHop` we also
    remove `CandidateRouteHop::id` inputs
    so now they are consumed from `self.target`
    and `self.source` functions.
    In the `add_entry` macro we also remove `source`
    and `target` arguments in favor of `candidate`
    of type `CandidateRouteHop` that holds the
    needed info.
2023-12-05 21:07:46 +02:00
jbesraa
366d688087
Add source and target to DirectedChannelInfo
`DirectedChannelInfo::source` return the `node_id`
  of the forwarding hop.
  `DirectedChannelInfo::target` return the `node_id`
  of the destination hop.
2023-12-05 21:07:45 +02:00
jbesraa
ec95e589ba
Add outbound flag to DirectedChannelInfo
If `outband` flag is set to true then `ChannelInfo::node_one`
  is forwarding a payment to target `ChannelInfo::node_two`.
  If `outband` flag is set to false then `ChannelInfo::node_two`
  is forwarding a payment to target `ChannelInfo::node_one`.
2023-12-05 21:07:44 +02:00
valentinewallace
37150b4d69
Merge pull request #2764 from TheBlueMatt/2023-11-chacha-cleanup
Trivial ChaCha cleanups
2023-12-05 12:00:40 -05:00
Matt Corallo
242e6aedb2
Merge pull request #2642 from Sharmalm/2346
logging every sent receive onion message
2023-12-05 00:10:01 +00:00
Valentine Wallace
633be238fd
Fix skimmed fee ser in Channel
Previously, if some holding cell HTLCs have skimmed fees present and some
don't, we would fail to deserialize a Channel. See added test coverage.
2023-12-04 16:41:37 -05:00
Wilmer Paulino
12c2086d58
Merge pull request #2753 from TheBlueMatt/2023-11-inbound-preimages
Provide inbound HTLC preimages to the `EcdsaChannelSigner`
2023-12-04 13:15:10 -08:00
Wilmer Paulino
7f96446294
Merge pull request #2771 from tnull/2023-12-log-details-for-ignored-first-hop
Log additional details when ignoring first hops
2023-12-04 11:38:21 -08:00
Matt Corallo
262072d816 Provide inbound HTLC preimages to the EcdsaChannelSigner
The VLS signer has a desire to see preimages for resolved forwarded
HTLCs when they are first claimed by us, even if that claim was for
the inbound edge (where claiming strictly increases our balance).

Luckily, providing that information is rather trivial, which we do
here.

Fixes #2356
2023-12-04 19:36:49 +00:00
Wilmer Paulino
4d66cce487
Merge pull request #2769 from TheBlueMatt/2023-12-2314-cleanups-3
Post-#2314 Cleanups #3
2023-12-04 10:09:52 -08:00
Elias Rohrer
52ecce9e28
Log additional details when ignoring first hops
Users are often confused when we fail to find a route due to some
requirements on the first hop are not being met. While we now take note
and log such candidates, we still previously required users to check
additional details to figure out why exactly the router refused to route
over a particular first hop.

Here, we add additional TRACE logging, in particular for
`ChannelDetails::next_outbound_htlc_limit_msat` and
`ChannelDetails::next_outbound_htlc_minimum_msat` when they are
relevant.
2023-12-04 19:07:54 +01:00
Matt Corallo
1eddd1ef8f
Merge pull request #2768 from benthecarman/preimage-helper
Add helper function for getting preimage from PaymentPurpose
2023-12-04 17:10:33 +00:00
Matt Corallo
4f0d5ede36 Remove redundant locking when creating WithChannelMonitor
The `WithChannelMonitor` log decorator redundantly locks the
`ChannelMonitor` inner mutex, which we fix here, as well as add a
new constructor which avoids locking at all if an inner mutex lock
is already readily available.
2023-12-03 20:06:18 +00:00
Matt Corallo
ed75ce35ab Drop log_bytes!() calls on Display types in ChannelManager
df3ab2ee27 was rebased one too many
times and ended up reverting some of the `log_bytes!()` removals
around types which now implement `Display` in `ChannelManager`.
This commit removes those, as well as one additoinal excess macro
which slipped in somewhere else.
2023-12-03 20:06:18 +00:00
Matt Corallo
18a18d8962 Correct lock drop'ing in ChainMonitor::update_channel
e21a500668 cleaned up the error
handling in `ChainMonitor::update_channel` a bit, but accidentally
replaced the deliberate panic with a hang. This commit ensures we
properly drop the monitors read lock before taking a write lock.
2023-12-03 20:06:18 +00:00
Matt Corallo
ab93d35da2 Add some missing WithContext wrappers in peer_handler.rs
df3ab2ee27 added `WithContext`
wrappers in most logs in `peer_handler.rs`, but due to long-term
rebasing it missed a few, which we add here.
2023-12-03 20:06:18 +00:00
Matt Corallo
de480d0212 Lean on Logger wrapping in ChannelMonitor rather than in channel
Now that `ChannelMonitor` is careful about wrapping `Logger`s at
the edge, there's no need to use `WithChannelMonitor` in a few
cases in `channel.rs` and one in `channelmanager.rs`.
2023-12-03 20:06:18 +00:00
Matt Corallo
65e37fdc29 Ensure ChannelMonitor Loggers are always wrapped with metadata
In order to ensure log lines generated by `ChannelMonitor` always
have a counterparty and channel ID entry, this consistently wraps
`Logger`s in a decorator in all `pub(X)` `ChannelMonitor` functions,
removing `pub` markings on `ChannelMonitorImpl` methods that aren't
actually publicly reachable anyway.

This also lets us clean up the `Logger` types in various
`ChannelMonitor` methods.
2023-12-03 20:05:53 +00:00
Matt Corallo
cf0539eba4 Doc that Record::node_id may be missing even with channel_id
There are various place where we log something related to a channel
but fail to fill in the channel's counterparty information. This is
somewhat surprising, given channel counterparty information is
always known, but simply is sometimes not readily accessible to LDK
when a log is printed.
2023-12-03 19:42:21 +00:00
Matt Corallo
2be5e370e3 Set log metadata in a few additional locations in channelmanager 2023-12-03 19:42:21 +00:00
Matt Corallo
b0606a1193 Log next-hop metadata when forwarding or failing to forward HTLC 2023-12-03 19:42:21 +00:00
Matt Corallo
2fc79cbfd3 Include next-hop counterparty node id in log metadata when sending 2023-12-03 19:42:21 +00:00
Matt Corallo
0ce0d48319 Add missing counterparty node id metadata to logs in HTLC decoding 2023-12-03 19:42:21 +00:00
benthecarman
00f578adee
Add helper function for getting preimage from PaymentPurpose 2023-12-03 12:42:17 -06:00
Matt Corallo
f57295f9d9 Include counterparty node id and channel id in shutdown log
This avoids an important shutdown log being about a channel but not
having the channel metadata.
2023-12-02 20:03:19 +00:00
Matt Corallo
ec1a66e4cd Add missing unwrap in reload_tests.rs 2023-12-02 19:19:07 +00:00
Matt Corallo
dfb02f1878 Marginally optimize test logging
973636bd2a introduced a new `HashMap`
in the `TestLogger` but then did lookups by iterating the entire
map. This fixes that, and also takes this opportunity to stop
allocating new `String`s for the module to store each log entry in
the `TestLogger`
2023-12-02 19:19:07 +00:00
henghonglee
ff5e5221d2 logging every sent and receive onion message
Logs every sent + receive for P2P messages
solves #2346
2023-12-03 00:24:14 +05:30
Jeffrey Czyz
e21a500668
Refactor ChainMonitor::update_channel error case
Move the handling of ChannelMonitorUpdateStatus::UnrecoverableError to
the point of error to avoid needing an unwrap later when re-wrapping the
logger.
2023-12-01 11:54:00 -06:00
Jeffrey Czyz
e6d8f350fc
Remove unused handle_error macro rule 2023-12-01 11:54:00 -06:00
henghonglee
df3ab2ee27
Use wrapper to add context to logging
Using a decorator pattern, add peer_id and channel_id to Record
stored on Logger.
2023-12-01 11:53:55 -06:00
henghonglee
a727ccab94
Add WithChannelMonitor 2023-12-01 11:50:34 -06:00
henghonglee
aa502fe948
Add WithChannelContext 2023-12-01 11:30:19 -06:00
henghonglee
973636bd2a
Add WithContext and Tests 2023-12-01 11:30:19 -06:00
Jeffrey Czyz
a42aeb5667
Add semantics to logger::Records
Include optional peer and channel ids to logger::Record. This will be
used by wrappers around Logger in order to provide more context (e.g.,
the peer that sent a message, the channel an operation is pertaining to,
etc.). Implementations of Logger can include this as metadata to aid in
searching logs.
2023-12-01 11:30:19 -06:00
henghonglee
0cba31fd38
Pass Record by value to Logger
Instead of passing a reference to a Record, pass the Logger an owned
Record so that it can be decorated with semantic context.
2023-12-01 11:30:19 -06:00
Matt Corallo
c79cf82224 Add inline suggestion tags to ChaCha20 SIMD wrappers
These are obviously super hot, and while LLVM shouldn't be
braindead here you never know, so we might as well `#[inline]`.
2023-11-30 23:38:31 +00:00
Matt Corallo
e0480b531d Drop unnecessary SIMD subtraction in ChaCha20 round
While its all constant arithmetic to calculate the shift, which
LLVM likely optimizes out for us, there's no reason to do it four
times, which just makes the code harder to read.
2023-11-30 23:35:43 +00:00
Valentine Wallace
6af786af6b
Test blinding point serialization in Channel. 2023-11-29 22:46:54 -05:00
Valentine Wallace
4d43ccdf0f
Test intro node failing blinded intercept HTLC. 2023-11-29 22:46:54 -05:00
Valentine Wallace
0a4587020e
Test intro node blinded HTLC failing in process_pending_htlc_fwds. 2023-11-29 22:46:54 -05:00
Valentine Wallace
b767d379c1
Correctly fail back downstream-failed blinded HTLCs as intro 2023-11-29 22:46:54 -05:00
Valentine Wallace
09cf4847bd
Correctly fail back blinded inbound fwd HTLCs when adding to a Channel
As the intro node.
2023-11-29 22:46:54 -05:00
Valentine Wallace
8c0c3a37db
Extract blinded route param creation into test util 2023-11-29 22:46:54 -05:00
Valentine Wallace
67d24633ae
Correctly fail back on outbound channel check for blinded HTLC
Forwarding intro nodes should always fail with 0x8000|0x4000|24.
2023-11-29 22:46:49 -05:00
Valentine Wallace
c8adb54b71
Test blinded forwarding payload encoded as receive error case 2023-11-29 22:43:13 -05:00
Valentine Wallace
918f09c529
Test blinded forward failure to calculate outbound cltv expiry
Intro node failure only.
2023-11-29 22:43:12 -05:00
Valentine Wallace
d2222c8224
Remove now-unused Readable impl for ReceiveTlvs 2023-11-29 22:43:12 -05:00
Valentine Wallace
47d34c3668
Support forwarding blinded HTLCs as intro node.
Error handling will be completed in upcoming commits.
2023-11-29 22:43:11 -05:00
Valentine Wallace
1a7254c178
Parse blinded forward-as-intro onion payloads
Previously, we only parsed blinded receive payloads.
2023-11-29 17:23:29 -05:00