Commit graph

5434 commits

Author SHA1 Message Date
Jeffrey Czyz
129dd30c45
Define a default MessageRouter implementation
Otherwise, users need to define one when using "Simple" type aliases.
2023-06-30 10:29:37 -04:00
Matt Corallo
bd12067777
Merge pull request #2372 from wpaulino/channelmanager-new-highest-seen-timestamp
Require best block timestamp within ChannelManager::new
2023-06-29 04:15:46 +00:00
Wilmer Paulino
82e0df5e4d
Require best block timestamp within ChannelManager::new
This ensures freshly initialized nodes can proceed to create unexpired
invoices without a call to `best_block_updated`, since an invoice's
expiration delta is applied to `highest_seen_timestamp`.
2023-06-27 13:43:14 -07:00
Matt Corallo
0f2c4c0d70
Merge pull request #2374 from arik-so/2023-06-build-warning-fixes
Fix build warnings
2023-06-27 14:32:25 +00:00
Arik Sosman
89aa7ace6a
Fix clone warning on nightly. 2023-06-26 10:17:18 -04:00
Arik Sosman
8c982a366b
Remove redundant muts in router.rs. 2023-06-24 10:54:14 -07:00
Arik Sosman
4c9fbe8e79
Fix warning about deserialization marker.
Specifically, the legacy deserialization
prevention marker variable was not being
read.
2023-06-24 10:52:27 -07:00
Arik Sosman
a6578c1159
Fix build warning about HTLCSource::dummy(). 2023-06-24 10:52:27 -07:00
Arik Sosman
4a56d87ef9
Fix build warning about public_from_secret_hex. 2023-06-24 10:52:27 -07:00
Matt Corallo
d327c231cf
Merge pull request #2368 from wpaulino/inbound-anchors-manual-acceptance
Require inbound channels with anchor outputs to be accepted manually
2023-06-24 15:44:46 +00:00
Wilmer Paulino
6fd13d7b22
Merge pull request #2367 from wpaulino/remove-anchors-flag
Remove anchors config flag
2023-06-23 16:17:48 -07:00
Wilmer Paulino
e6348b8931
Require inbound channels with anchor outputs to be accepted manually
Since the use of channels with anchor outputs requires a reserve of
onchain funds to handle channel force closures, it would be
irresponsible to allow a node to accept inbound channel without first
consulting such reserves. To allow users to do so, we require such
channels be manually accepted.
2023-06-23 15:57:46 -07:00
Matt Corallo
3a98c2a705
Merge pull request #2373 from TheBlueMatt/2023-06-116-alpha 2023-06-23 22:38:47 +00:00
Wilmer Paulino
25e3f94379
Support manual inbound acceptance in channel creation test utils 2023-06-23 14:26:46 -07:00
Matt Corallo
f833448703
Merge pull request #2362 from TheBlueMatt/2023-06-unblocked-mons-in-manager
Move in-flight ChannelMonitorUpdates to ChannelManager
2023-06-23 20:46:26 +00:00
Wilmer Paulino
82b646c548
Remove anchors config flag
Now that all of the core functionality for anchor outputs has landed,
we're ready to remove the config flag that was temporarily hiding it
from our API.
2023-06-23 13:32:08 -07:00
Matt Corallo
23e9fc79fd Bump versions to LDK 116-alpha1 and invoice 24.0-alpha1 2023-06-23 19:43:26 +00:00
Matt Corallo
9c3ad28fa8 Rename Channel::pending_monitor_updates to blocked
To differentiate between in-flight pending completion and blocked
updates.
2023-06-23 19:25:40 +00:00
Matt Corallo
7884e687d2 Rename Channel's latest-monitor-update fetch method for clarity
`Channel::get_latest_complete_monitor_update_id` no longer refers
to complete updates, but rather ones which were passed to the
`ChannelManager` and which the `CHannel` no longer knows about.
Thus, we rename it `get_latest_unblocked_monitor_update_id`.
2023-06-23 19:25:40 +00:00
Matt Corallo
60e671bb93 Remove the blocked param on ChannelMonitorUpdates in Channel
Now that all `ChannelMonitorUpdate`s stored in `Channel` are
blocked we don't need a bool to track it.
2023-06-23 19:25:40 +00:00
Matt Corallo
e186593687 Drop the now-unused update_id param to monitor update macros 2023-06-23 19:25:40 +00:00
Matt Corallo
4041f0899f Move in-flight ChannelMonitorUpdates to ChannelManager
Because `ChannelMonitorUpdate`s can be generated for a
channel which is already closed, and must still be tracked
through their completion, storing them in a `Channel`
doesn't make sense - we'd have to have a redundant place to
put them post-closure and handle both storage locations
equivalently.

Instead, here, we move to storing in-flight
`ChannelMonitorUpdate`s to the `ChannelManager`, leaving
blocked `ChannelMonitorUpdate`s in the `Channel` as they
were.
2023-06-23 19:25:40 +00:00
Matt Corallo
397386539d
Merge pull request #2361 from arik-so/2023-06-anchor-channel-type-features
Replace `opt_anchors` with `ChannelTypeFeatures`
2023-06-23 19:12:15 +00:00
Arik Sosman
82b53598f4
Sync ChannelTransactionParameters features to ChannelContext. 2023-06-23 10:37:14 -07:00
Arik Sosman
ed5f9f6a9b
Verify channel type features for decoding. 2023-06-23 10:37:14 -07:00
Arik Sosman
1d9a709529
Replace opt_anchors with ChannelTypeFeatures
This change modifies six structs that were keeping
track of anchors features with an `opt_anchors` field,
as well as another field keeping track of nonzero-fee-
anchor-support.
2023-06-23 10:37:14 -07:00
valentinewallace
773e8ad583
Merge pull request #2365 from TheBlueMatt/2023-06-fix-fuzz-dep
Ensure we build if a downstream crate sets `--cfg=fuzzing`
2023-06-22 18:49:09 -04:00
Arik Sosman
970b174e90
Method for ChannelTypeFeatures serialization compatibility. 2023-06-22 15:23:11 -07:00
Arik Sosman
06a720fa7f
Define ChannelTypeFeatures methods for anchors logic.
Specifically, introduce a new constructor for an anchors-
supporting feature set, as well as methods that will
maintain forwards-compatible deserialization in older
versions.
2023-06-22 15:23:11 -07:00
Arik Sosman
bf2218260e
Reference-rhs bitwise operations for features. 2023-06-22 15:23:11 -07:00
Arik Sosman
38a2186cb6
Document nonzero anchors in features module. 2023-06-22 15:23:11 -07:00
Arik Sosman
7d406d95b4
Introduce nonzero fee anchors feature. 2023-06-22 14:39:42 -07:00
Matt Corallo
1c7b6925a2 Simplify cases in handle_new_monitor_update macro
By giving up on a tiny bit of parallelism and tweaking the return
types, we can make the `handle_new_monitor_update` macro a bit
clearer - now the only cases where its called after a monitor was
updated was when the monitor was initially committed.
2023-06-21 22:37:50 +00:00
Matt Corallo
5e528ff6bb Drop the now-unused push_blockable_mon_update 2023-06-21 22:37:50 +00:00
Matt Corallo
c843f68d5b Move most handle_new_monitor_update calls to pass the update
Most of the calls to the `handle_new_monitor_update` macro had the
exact same pattern - calling `update_monitor` followed by the
macro. Given that common pattern will grow to first pushing the
new monitor onto an in-flight set and then calling `update_monitor`
unifying the pattern into a single macro now avoids more code churn
in the coming commits.
2023-06-21 22:37:50 +00:00
Matt Corallo
1433e9ee7b Return owned ChannelMonitorUpdates from Channel
In the coming commits we'll move to storing in-flight
`ChannelMonitorUpdate`s in the `ChannelManager` rather in the
`Channel` (which will then only retain `ChannelMonitorUpdate`s
which have not yet been released/are blocked.

This will simplify handling of pending `ChannelMonitorUpdate` after
a channel has closed by not having to move them into the
`ChannelManager`.
2023-06-21 22:37:49 +00:00
Elias Rohrer
15b1c9b837
Merge pull request #2319 from valentinewallace/2023-05-forward-less-than-onion
Allow forwarding less than the amount in the onion
2023-06-21 09:25:07 +02:00
Matt Corallo
e49a1ba96d Ensure we build if a downstream crate sets --cfg=fuzzing
Downstream crates building fur fuzzing will usually set
`--cfg=fuzzing` as a side-effect of the Rust fuzzing tooling. Thus,
we should ensure we build without failure in such cases.

We do this here by simply relying on the `_test_utils` feature,
rather than conditionally-compiling in modules based on the
`fuzzing` flag.
2023-06-20 23:22:15 +00:00
Valentine Wallace
2127eb8a19
Document on claim events that amount_msat may be > invoice amount 2023-06-20 17:57:38 -04:00
Valentine Wallace
0d94d9f9b7
Check UpdateAddHTLC::skimmed_fee_msat on receive
Make sure the penultimate hop took the amount of fee that they claimed to take.
Without checking this TLV, we're heavily relying on the receiving wallet code
to correctly implement logic to calculate that that the fee is as expected.
2023-06-20 17:57:38 -04:00
Valentine Wallace
4cee62233c
Set UpdateAddHTLC::skimmed_fee_msat on forward
So the receiver can verify it and approve underpaying HTLCs (see
ChannelConfig::accept_underpaying_htlcs).
2023-06-20 17:57:38 -04:00
Valentine Wallace
5a79d6cc53
Persist update_add sender skimmed fee in Channel 2023-06-20 17:57:38 -04:00
Valentine Wallace
47567e45dc
Track the sender's skimmed fee in UpdateAddHTLC 2023-06-20 17:57:38 -04:00
Valentine Wallace
9a3914dee6
Allow receiving less than the onion claims to pay
Useful for penultimate hops in routes to take an extra fee, if for example they
opened a JIT channel to the payee and want them to help bear the channel open
cost.
2023-06-20 17:57:38 -04:00
Valentine Wallace
27b99acd64
Add PaymentClaimable::counterparty_skimmed_fee_msat
See its docs
2023-06-20 17:57:38 -04:00
Valentine Wallace
94853044fe
Persist counterparty skimmed fee in ClaimableHTLC
Used to get an accurate skimmed fee in the resulting PaymentClaimable event.
2023-06-20 17:57:38 -04:00
Valentine Wallace
52f290119d
Set extra skimmed fee on intercepted forward
Receivers need to use this value to verify incoming payments if
ChannelConfig::accept_underpaying_htlcs is set.
2023-06-20 17:57:38 -04:00
Valentine Wallace
85a5b31bb8
Add config knob for accepting underpaying HTLCs
See ChannelConfig::accept_underpaying_htlcs
2023-06-20 17:57:38 -04:00
Valentine Wallace
672d666ef4
Move next hop packet pubkey calculation to outside channel lock 2023-06-20 17:57:38 -04:00
Valentine Wallace
a2a7fef4d7
Move PendingHTLCStatus construction inside channel lock
We need the channel lock for constructing a pending HTLC's status because we
need to know if the channel accepts underpaying HTLCs in upcoming commits.
2023-06-20 17:57:35 -04:00