Commit graph

5578 commits

Author SHA1 Message Date
Elias Rohrer
f6e0ad2a05 Pin proc-macro2 in CI to fix MSRV breakage
The proc-macro2 crate switched to Rust edition 2021 starting with
v1.0.66, i.e., has MSRV of 1.56.

Here, we pin it in CI to fix the breakage.
2023-07-17 23:20:45 +00:00
Matt Corallo
4ab32f9c2b Test MSRV builds (without dev-dependencies) in CI 2023-07-17 23:20:45 +00:00
Matt Corallo
fd2464374b Drop tokio/macros dependency in lightning-net-tokio, fix MSRV
The `tokio` `macros` feature depends on `proc-macro2`, which
recently broke its MSRV in a patch version. Such crates aren't
reasonable for us to have as dependencies, so instead we replace
the one trivial use we have of `tokio::select!()` with our own
manual future.
2023-07-17 23:20:39 +00:00
Wilmer Paulino
c7d84d8ac8
Add warning regarding remote fee estimators 2023-07-17 15:31:22 -07:00
Matt Corallo
c5c5f3fea2
Merge pull request #2414 from TheBlueMatt/2023-07-cut-116-rc
Add 0.0.116 CHANGELOG entries and prep for 0.0.116rc1
2023-07-17 22:18:19 +00:00
Matt Corallo
cc5fea84e6 Update version numbers to rc1, from alpha1 2023-07-17 20:07:30 +00:00
Matt Corallo
b4a5de1d41 Add 0.0.116rc1 CHANGELOG entries (to be renamed 116 later) 2023-07-17 20:07:30 +00:00
Matt Corallo
baf9731a21
Merge pull request #2415 from wpaulino/update-fee-anchors
Add min mempool estimate for feerate updates on anchor channels
2023-07-17 19:45:51 +00:00
Wilmer Paulino
52ec082401
Clarify log for commitment transaction already meeting required feerate 2023-07-17 10:57:37 -07:00
Wilmer Paulino
9b614f4ff2
Drop use of RefCell in DebugIter
The `RefCell` was necessary in a previous iteration of the code in which
the iterator was not `Clone` so we needed interior mutability in order
to consume the iterator. Now that it is `Clone`, we can drop it, as
we're no longer mutating the original iterator.
2023-07-17 10:57:34 -07:00
Matt Corallo
ba8af2280d
Merge pull request #2403 from wpaulino/bump-transaction-event-handler-tests
Integrate BumpTransactionEventHandler into existing anchor tests
2023-07-17 17:18:20 +00:00
valentinewallace
8e2b70d91a
Merge pull request #2416 from jkczyz/2023-07-invoice-rename
Qualify BOLT 11/12 invoice and related types
2023-07-14 21:38:31 -04:00
Wilmer Paulino
7751cb9066
Use min mempool feerate for outbound updates on anchor channels
As done with inbound feerate updates, we can afford to commit less in
fees, as long as we still may the minimum mempool feerate. This enables
users to spend a bit more of their balance, as less funds are being
committed to transaction fees.
2023-07-14 14:49:57 -07:00
Wilmer Paulino
1349ac8e2d
Relax constraints for inbound feerate updates on anchor channels
Channels supporting anchors outputs no longer require their feerate
updates to target a prompt confirmation since commitment transactions
can be bumped when broadcasting. Commitment transactions must now at
least meet the minimum mempool feerate, until package relay is deployed,
such that they can propagate across node mempools in the network by
themselves.

The existing higher bound no longer applies to channels supporting
anchor outputs since their HTLC transactions don't have any fees
committed, which directly impact the available balance users can send.
2023-07-14 14:49:56 -07:00
Wilmer Paulino
db3d58c586
Add new ConfirmationTarget variant for min mempool feerates
Now that we support channels with anchor outputs, we add a new
ConfirmationTarget variant that, for now, will only apply to such
channels. This new variant should target estimating the minimum feerate
required to be accepted into most node mempools across the network.
2023-07-14 14:49:52 -07:00
Wilmer Paulino
ff474ba384
Integrate BumpTransactionEventHandler into existing anchor tests 2023-07-14 14:45:20 -07:00
Wilmer Paulino
38f12698a7
Add BumpTransactionEventHandler instance to node test harness 2023-07-14 14:45:20 -07:00
Wilmer Paulino
964b4939b1
Improve logging in BumpTransactionEventHandler paths 2023-07-14 14:45:19 -07:00
Wilmer Paulino
c18013c2b6
Add log_iter utility macro
This is a useful primitive to have that formats the contents of the
iterator as a comma-separated list.
2023-07-14 14:45:19 -07:00
Wilmer Paulino
eac1bc18e3
Add debug assertions for weight estimates of bump transactions
This ensures our estimates are correct by never underestimating and
only allowing overestimations by a margin of 1%.
2023-07-14 14:45:18 -07:00
Wilmer Paulino
9088dae7da
Consider existing commitment transaction feerate when bumping
With anchors, we've yet to change the frequency or aggressiveness of
feerate updates, so it's likely that commitment transactions have a
good enough feerate to confirm on its own. In any case, when producing a
child anchor transaction, we should already take into account the fees
paid by the commitment transaction itself, allowing the user to save
some satoshis. Unfortunately, in its current form, this will still
result in overpaying by a small margin at the expense of making the coin
selection API more complex.
2023-07-14 14:45:18 -07:00
Wilmer Paulino
990c500099
Avoid yielding ChannelClose bump events with sufficient feerate
There's no need to yield such an event when the commitment transaction
already meets the target feerate on its own, so we can simply broadcast
it without an anchor child transaction. This may be a common occurrence
until we are less aggressive about feerate updates.
2023-07-14 14:45:17 -07:00
Wilmer Paulino
19de4353d5
Move feerate helpers to chain module
We plan to use these outside of the `bump_transaction` module in the
next commit, and they really should belong in the same module as
`FeeEstimator`.
2023-07-14 14:45:15 -07:00
Jeffrey Czyz
7ad3f88eba
Qualify the BOLT 11 invoice description type
A previous commit qualified the BOLT 11 invoice type, so any related
types should be similarly qualified, if public.
2023-07-14 15:59:33 -05:00
Jeffrey Czyz
a28c90a1b3
Qualify the BOLT 11 invoice signature type
A previous commit qualified the BOLT 11 invoice type, so any related
types should be similarly qualified, if public.
2023-07-14 15:53:07 -05:00
Jeffrey Czyz
8c4a85b357
Qualify the BOLT 11 invoice features type
A previous commit qualified the BOLT 11 invoice type, so any related
types should be similarly qualified, if public.
2023-07-14 15:49:00 -05:00
Jeffrey Czyz
62ca48f979
Qualify the BOLT 11 semantic error type
A previous commit qualified the BOLT 12 semantic error type. Qualify the
BOLT 11 semantic error type for consistency.
2023-07-14 15:06:17 -05:00
Jeffrey Czyz
6fb34d30b3
Qualify the BOLT 11 parse error type
A previous commit qualified the BOLT 12 parse error type. Qualify the
BOLT 11 parse error type for consistency.
2023-07-14 15:06:17 -05:00
Jeffrey Czyz
4c383a39a8
Qualify the BOLT 11 raw invoice types
A previous commit qualified the BOLT 11 invoice type, so any related
types should be similarly qualified, if public.
2023-07-14 15:06:10 -05:00
Jeffrey Czyz
93ead4aec5
Qualify the BOLT 11 invoice type
A previous commit qualified the BOLT 12 invoice type. Qualify the BOLT
11 invoice type for consistency.
2023-07-14 15:05:11 -05:00
Jeffrey Czyz
3234136f57
Qualify the BOLT 12 semantic error
To avoid a naming conflict in bindings with BOLT 11 semantic error,
qualify the BOLT 12 semantic error type.
2023-07-14 15:04:43 -05:00
Jeffrey Czyz
5627d7cc1f
Qualify the BOLT 12 parse error
To avoid a naming conflict in bindings with BOLT 11 parse error, qualify
the BOLT 12 parse error type.
2023-07-14 15:04:43 -05:00
Jeffrey Czyz
d94227cc13
Qualify the BOLT 12 unsigned invoice type
A previous commit qualified the BOLT 12 invoice type, so any related
types should be similarly qualified, if public.
2023-07-14 15:04:43 -05:00
Jeffrey Czyz
f8c9b092fd
Qualify the BOLT 12 invoice type
To avoid a naming conflict in bindings with BOLT 11 invoices, qualify
the BOLT 12 invoice type.
2023-07-14 15:04:43 -05:00
Jeffrey Czyz
3e50011e22
Fix grammar in docs 2023-07-14 15:04:30 -05:00
Jeffrey Czyz
1227dfc1ee
Use rustc stable for check_commits
Otherwise, the compiler will panic when using 1.57 for upcoming commits.
2023-07-14 15:02:29 -05:00
Matt Corallo
df237ba3b4
Merge pull request #2391 from TheBlueMatt/2023-07-all-compl-actions
Handle pre-startup and closed-channel monitor update completion actions
2023-07-12 22:37:40 +00:00
Matt Corallo
550cf91439 Add comment describing when a completion action can be discarded
In an older PR a reviewer had asked why the discarding of a channel
being blocked on another monitor update is okay if the blocked
channel has since closed. At the time, this was not actually okay -
the monitor updates in the channel weren't moved to the
`ChannelManager` on close so the whole pipeline was busted, but
with the changes in 4041f0899f the
handling of channel closes with pending monitor updates is now
correct, and so is the existing code block.
2023-07-12 20:53:10 +00:00
Matt Corallo
f9521a4bda Run monitor update completion actions for pre-startup completion
If a `ChannelMonitorUpdate` completes being persisted, but the
`ChannelManager` isn't informed thereof (or isn't persisted) before
shutdown, on startup we may still have it listed as in-flight. When
we compare the available `ChannelMonitor` with the in-flight set,
we'll notice it completed and remove it, however this may leave
some post-update actions dangling which need to complete.

Here we handle this with a new `BackgroundEvent` indicating we need
to handle any post-update action(s) for a given channel.
2023-07-12 20:53:10 +00:00
Elias Rohrer
07606c1841
Merge pull request #2393 from wpaulino/bump-transaction-event-handler-fixups
Bump transaction event handler fixups
2023-07-12 21:17:56 +02:00
Matt Corallo
29f81104f5
Merge pull request #2406 from tnull/2023-07-pin-serde
Pin `serde_json` in CI to fix MSRV builds
2023-07-12 16:12:11 +00:00
Elias Rohrer
7b7ccb6de9
Pin serde_json in CI to fix MSRV
Unfortunately `serde_json` switched to use Rust edition 2021 with
version 1.0.101, i.e., has an MSRV of 1.56 now.
2023-07-12 13:28:25 +02:00
Wilmer Paulino
4c7883c831
Expose previous UTXO for anchor and HTLC inputs
This may be required by some wallets that rely on PSBTs internally to
create/sign transactions.
2023-07-11 16:53:25 -07:00
Wilmer Paulino
0dbfe245a9
Add transaction-related helpers to AnchorDescriptor
This provides a similar interface as `HTLCDescriptor` for users which
choose to implement their own bump transaction event handler.
2023-07-11 16:53:24 -07:00
Wilmer Paulino
690ad18b22
Provide missing post-derivation signer parameters
Users may expect these to be provided manually after derivation in the
event they need to perform any enforcement prior to signing.
2023-07-11 16:53:24 -07:00
Wilmer Paulino
72c42ee786
Cache HTLC per_commitment_point in descriptor
This allows us to obtain the HTLC input and output from its descriptor
without needing to derive the `per_commitment_point` through the signer.
2023-07-11 16:53:22 -07:00
Wilmer Paulino
ae701a0d20
Expose CoinSelection struct members
These are meant to be provided by the user, so they need to be exposed
in the API.
2023-07-11 13:34:42 -07:00
Wilmer Paulino
a100ed0098
Accept BumpTransactionEvent in handle_event
There's no reason to accept the general `Event` enum.
2023-07-11 13:34:35 -07:00
Matt Corallo
e404c129a5
Merge pull request #2400 from TheBlueMatt/2023-07-kill-vec_type
Fix backwards compat for blocked_monitor_updates and finally kill `vec_type`
2023-07-11 19:58:34 +00:00
Matt Corallo
d83390c63b Document some TLV write/read formats
While we don't want to publicly document these and support them for
downstream crates, documenting them internally is useful.
2023-07-11 16:20:03 +00:00