Commit graph

6061 commits

Author SHA1 Message Date
Matt Corallo
7aefa3131c
Merge pull request #2631 from TheBlueMatt/2023-09-pm-no-refs-reqd
Fix `Simple*PeerManager` to not require refs to the `UtxoLookup`
2023-10-03 17:12:19 +00:00
Matt Corallo
0ce1c5a674
Merge pull request #2634 from TheBlueMatt/2023-09-claimable-unwrap
Avoid unwrap'ing `channel_parameters` in to_counterparty signing
2023-10-03 17:12:08 +00:00
Matt Corallo
0b4bb24af8 Clean up at least some lifetimes on SimpleRefPeerManager
Rather than simply a, b, c, d...we at least use names for a few
things, also splitting the reused 'f lifetime.
2023-10-03 04:36:25 +00:00
Matt Corallo
60567da0bd Note when we're allowed to unwrap channel parameters in docs
This further documents the parameter-fetching utilities in
`InMemorySigner` to hopefully make them more robust against future
spurious `unwrap`s.
2023-10-03 04:32:40 +00:00
Matt Corallo
65569ed5d6 Make InMemorySigner parameter-fetching utilities return Options
In the previous commit we fixed a bug where we were spuriously
(indirectly) `unwrap`ing the `channel_parameters` in
`InMemorySigner`. Here we make such bugs much less likely in the
future by having the utilities which do the `unwrap`ing internally
return `Option`s instead.

This makes the `unwrap`s clear at the callsite.
2023-10-03 04:25:03 +00:00
Matt Corallo
04841acb86
Merge pull request #2595 from TheBlueMatt/2023-09-117-bindings-part1
Various cleanups to make bindings generation simpler
2023-10-03 03:56:46 +00:00
Matt Corallo
a938fecc00
Merge pull request #2632 from TheBlueMatt/2023-09-writeable-rwlock
Implement Readable/Writeable for RwLock wrappers
2023-10-03 03:45:03 +00:00
Jeffrey Czyz
9b1b724dad
Merge pull request #2633 from TheBlueMatt/2023-09-expose-onion-parse
Expose `parse_onion_address` publicly in `no-std`
2023-10-02 20:16:13 -05:00
Matt Corallo
6a55dcce83 Avoid unwrap'ing channel_parameters in to_counterparty signing
Previously, `StaticPaymentOutputDescriptor`s did not include
`channel_parameters` for the signer. As a result, when going to
spend old `StaticPaymentOutputDescriptor`s,
`InMemorySigner::sign_counterparty_payment_input` may be called
with `channel_parameters` set to `None`. This should be fine, but
in fa2a2efef4 we started relying on
it (indirectly via `channel_features`) for signing. This caused an
`unwrap` when spending old output descriptors.

This is fixed here by simply avoiding the unwrap and assuming old
`StaticPaymentOutputDescriptor`s represent non-anchor channels.
2023-10-01 00:40:20 +00:00
Matt Corallo
7a583bb756 Remove unused mem::drop which drops a reference 2023-10-01 00:05:01 +00:00
Matt Corallo
6b75fafaf3 Fix new unused variable warning in test_utils.rs 2023-10-01 00:05:01 +00:00
Matt Corallo
add71d42a0 Use crate::prelude::* to load Vec, rather than crate::Vec
This is kinda dumb, but the bindings get confused when referring
to `Vec` absolutely in a `use` statement, and there's no reason not
to load our prelude everywhere.
2023-10-01 00:05:01 +00:00
Matt Corallo
34f36d5ffe Drop various bounds on types passed to MonitorUpdatingPersister
The new `MonitorUpdatingPersister` has a few redundant type bounds
(re-specified on functions after having been specified on the
struct itself), which we remove here.

Further, it requires a `Deref<FeeEstimator>` which is `Clone`able.
This is generally fine in rust, but annoying in bindings, so we
simply elide it in favor if a `&Deref<FeeEstimator>`.
2023-10-01 00:05:01 +00:00
Matt Corallo
07205a2869 Make create_onion_message a freestanding function
The new `create_onion_message` function in `OnionMessenger` is hard
to handle - it has various generic requirements indirectly via the
struct, but they're not bounded by any of the method parameters.
Thus, you can't simply call `OnionMessenger::create_onion_message`,
as various bounds are not specified.

Instead, we move it to a freestanding function so that it can be
called directly without explicitly setting bounds.
2023-10-01 00:05:01 +00:00
Matt Corallo
6ce4c6cbc5 Mark AChannelManager no-export
The trait itself has no purpose for bindings, as all structs are
concretized anyway. Further, the bindings have specific handling
for generic bounding traits like this.
2023-10-01 00:05:01 +00:00
Matt Corallo
09cd4ed976 Mark SpendableOutputDescriptor::to_psbt_input as no-export
Its honestly likely not all that useful as its not materially
interoperable with other PSBT libraries. Instead, users should
simply fetch the full PSBT and use the inputs from it as they see
fit.
2023-10-01 00:05:01 +00:00
Matt Corallo
9c78d8e90e Drop unnecessary crate:: prefix when accessing bitcoin in macro
Unexported macros don't need to use the `$crate` prefix.
2023-10-01 00:05:01 +00:00
Matt Corallo
095fca9293 Avoid ref to a Vec when accessing custom onion TLVs
The bindings can't easily return a reference to a `Vec`, so we
instead split the implementation into vec/slice depending on the
`c_bindings` flag.
2023-10-01 00:05:01 +00:00
Matt Corallo
087c8f683a Avoid blanket impls in bindings builds
The C bindings implements `Deref` for all traits, so having a
blanket `Deref` implementation ends up conflicting with this.
2023-10-01 00:05:01 +00:00
Matt Corallo
0bc0de46fa Simplify score bounding with a unified type
In a few places we require a unified scorer, which implements both
`ScoreLookUp` and `ScoreUpdate`. Rather than double-bounding (which
the bindings generator can't handle directly), we use a top-level
`Score` trait which requires both and is implemented for all
implementers of both supertraits.
2023-10-01 00:05:01 +00:00
Matt Corallo
748bebadb4 Remove unnecessary bounds in scoring
In our scoring logic we have a handful of unnecessary bounds,
leading to extra diff in the bindings branch when those bounds have
to be removed as well as a few cases where bindings generation
simply gets confused.

Here we remove a number of bounds across the scoring traits and
impls, cleaning things up and simplifying bindings changes.
2023-10-01 00:05:01 +00:00
Matt Corallo
26c1639ab6 Use Default::default() to construct () as score-updating param
In 6b0d94a302 we switched most tests
to `Default::default()` for scoring parameters passed to
route-fetching. Here we do the same for the scoring parameters when
passed to score-updating.
2023-10-01 00:05:01 +00:00
Matt Corallo
327142894d Expose parse_onion_address publicly in no-std
The reason for having a separate `parse_onion_address` from
`FromStr` is to have an onion parsing function in `no-std`, but
when we added it we forgot to make it public. We do this here, as
well as fix a few compilation warnings in `no-std`.
2023-09-30 18:06:38 +00:00
Matt Corallo
783e255d4f Switch Simple*ChannelManager locks around Score to RwLock
This switches the locks used around `ProbabilisticScorer` in
`Simple*ChannelManager` type aliases to `RwLock`.
2023-09-30 18:04:31 +00:00
Matt Corallo
6482635ba6 Fix Simple*PeerManager to not require refs to the UtxoLookup
`UtxoLookup` doesn't strictly need to be referenced from the
`PeerManager`, and in fact the new `GossipVerifier` in
`lightning-block-sync` requires itself to be owned by the
`PeerManager` (for circular type reasons).

This allows us to use `lightning-block-sync`'s `GossipVerifier`
with `SimpleArcPeerManager` in ldk-sample.
2023-09-30 17:57:54 +00:00
Matt Corallo
3e93f9ad88 Implement Readable/Writeable for RwLock wrappers
We now support separate R/W locks in `LockableScore`, which allow
us to do routefinding in parallel, however in order to support
`WriteableScore` for such users we need to implement `Writeable`
for `RwLock` wrappers around `Writeable` types, which we do here.
2023-09-30 17:41:43 +00:00
Matt Corallo
20f287f439
Merge pull request #2630 from TheBlueMatt/2023-09-117-rc1
Bump crate versions to 0.0.117-rc1/invoice 0.25-rc1
2023-09-30 00:38:27 +00:00
Matt Corallo
cff2061335
Merge pull request #2610 from wpaulino/missing-htlc-claim-balance
Fix matching of second-stage HTLC claim in get_htlc_balance
2023-09-29 23:55:04 +00:00
Matt Corallo
f534ce26c9
Merge pull request #2621 from G8XSU/dont-persist-erroneous-update
Persist entire monitor if there is an error while applying monitor_update
2023-09-29 23:45:57 +00:00
Matt Corallo
7036681728 Bump crate versions to 0.0.117-rc1/invoice 0.25-rc1 2023-09-29 23:39:18 +00:00
Wilmer Paulino
fd66a298f3
Fix wrong node broadcaster in test_yield_anchors_events 2023-09-29 16:28:22 -07:00
Wilmer Paulino
4a393ee540
Add anchors coverage to test_revoked_counterparty_aggregated_claims 2023-09-29 16:28:20 -07:00
Wilmer Paulino
fe45af62a5
Add anchors coverage to test_revoked_counterparty_htlc_tx_balances 2023-09-29 16:27:10 -07:00
Gursharan Singh
976acd8af0
Add update_persisted_channel doc to indicate rare case for None update 2023-09-29 16:26:40 -07:00
Gursharan Singh
5e6a0d5f38
Persist full monitor if there is an error while applying monitor_update
Motivation: When there is an error while applying monitor_update to a
channel_monitor,  we don't want to persist a 'monitor_update' which
results in a failure to apply later while reading 'channel_monitor' with
updates from storage. Instead, we should persist the entire 'channel_monitor'
here.
2023-09-29 16:26:40 -07:00
Gursharan Singh
13eac47ed9
Correctly mark chain_sync updates in test_utils
We were incorrectly marking updates as chain_sync
or not in test_utils based on whether monitor_update
is None or not. Instead, use UpdateOrigin to determine it.
2023-09-29 16:26:29 -07:00
Wilmer Paulino
4156d7c53d
Add anchors coverage to test_revoked_counterparty_commitment_balances 2023-09-29 16:24:45 -07:00
Wilmer Paulino
898a20066c
Add anchors coverage to test_balances_on_local_commitment_htlcs 2023-09-29 16:24:44 -07:00
Wilmer Paulino
ea4b187df4
Add anchors coverage to test_claim_value_force_close 2023-09-29 16:24:44 -07:00
Wilmer Paulino
28f2dac844
Add anchors coverage to chanmon_claim_value_coop_close 2023-09-29 16:24:44 -07:00
Wilmer Paulino
52d76f97fc
Add test util to handle bump HTLC events 2023-09-29 16:24:42 -07:00
Matt Corallo
0930be3304
Fix matching of second-stage HTLC claim in get_htlc_balance
We incorrectly assumed that the descriptor's output index from
second-stage HTLC transaction would always match the HTLC's output index
in the commitment transaction. This doesn't make any sense though, we
need to make sure we map the descriptor to it's corresponding HTLC in
the commitment. Instead, we check that the transaction from which the
descriptor originated from spends the HTLC in question.

Note that pre-anchors, second-stage HTLC transactions are always 1
input-1 output, so previously we would only match if the HTLC was the
first output in the commitment transaction. Post-anchors, they are
malleable, so  we can aggregate multiple HTLC claims into a single
transaction making this even more likely to happen. Unfortunately, we
lacked proper coverage in this area so the bug went unnoticed. To
address this, we aim to extend our existing coverage of
`get_claimable_balances` to anchor outputs channels in the following
commits.
2023-09-29 16:24:39 -07:00
Matt Corallo
e0fe325402
Merge pull request #2629 from jkczyz/2023-09-invreqfailed
Config-guard `Event::InvoiceRequestFailed`
2023-09-29 22:42:50 +00:00
Matt Corallo
620244dc2e
Merge pull request #2605 from wpaulino/anchors-monitor-track-to-remote-script
Use correct to_remote script in counterparty commitments
2023-09-29 22:06:58 +00:00
Jeffrey Czyz
92e5cb6805
Remove unused imports 2023-09-29 15:03:23 -07:00
Jeffrey Czyz
5f58f8d127
Fix build warning for unused method 2023-09-29 15:03:23 -07:00
Jeffrey Czyz
6bd962bc51
Remove an unnecessary enumerate 2023-09-29 15:03:23 -07:00
Jeffrey Czyz
c7219e4683
Config-guard Event::InvoiceRequestFailed
The event cannot be generated publicly, so remove it for now to avoid
users needing to handle it.
2023-09-29 15:03:13 -07:00
Matt Corallo
d007d1b79f
Merge pull request #2628 from wvanlint/fix_multiple_shutdown_results
Fix handling multiple ShutdownResults
2023-09-29 21:25:51 +00:00
Wilmer Paulino
f464aa97c3
Expose witness_script for StaticPaymentOutputDescriptor 2023-09-29 14:22:04 -07:00