Valentine Wallace [Fri, 4 Nov 2022 16:42:48 +0000 (12:42 -0400)]
Track incoming amount in PendingHTLCInfo
Used in upcoming commit(s) when we generate the PaymentIntercepted event for
intercepted payments.
Co-authored-by: John Cantrell <johncantrell97@gmail.com>
Co-authored-by: Valentine Wallace <vwallace@protonmail.com>
Valentine Wallace [Fri, 4 Nov 2022 18:16:20 +0000 (14:16 -0400)]
Delete unnecessary whitespace in process_pending_forwards
Only whitespace diff
Valentine Wallace [Fri, 4 Nov 2022 16:28:36 +0000 (12:28 -0400)]
Refactor HTLCForwardInfo::AddHTLC for intercept forwards
In upcoming commit(s), we'll want to store intercepted HTLC forwards in
ChannelManager before the user signals that they should be forwarded. It
wouldn't make sense to store a HTLCForwardInfo as-is because the FailHTLC
variant doesn't make sense, so we refactor out the ::AddHTLC contents into its
own struct for storage.
Co-authored-by: John Cantrell <johncantrell97@gmail.com>
Co-authored-by: Valentine Wallace <vwallace@protonmail.com>
Arik [Tue, 8 Nov 2022 19:55:48 +0000 (11:55 -0800)]
Merge pull request #1833 from johncantrell97/2022-11-rgs-handle-removed-channel
Ignore RGS channel updates for unknown channels
Jeffrey Czyz [Tue, 9 Aug 2022 22:40:26 +0000 (17:40 -0500)]
Builder for creating offers
Add a builder for creating offers given a required description and
node_id. Other settings are optional and duplicative settings will
override previous settings for non-Vec fields.
Matt Corallo [Tue, 8 Nov 2022 18:07:26 +0000 (18:07 +0000)]
Merge pull request #1837 from tnull/2022-10-fix-meeting-time
Fix LDK Dev Meeting time
Elias Rohrer [Tue, 8 Nov 2022 09:42:25 +0000 (10:42 +0100)]
Fix LDK Dev Meeting time and typo
John Cantrell [Fri, 4 Nov 2022 19:42:19 +0000 (15:42 -0400)]
ignore updates for unknown channels
Matt Corallo [Fri, 4 Nov 2022 20:57:27 +0000 (20:57 +0000)]
Merge pull request #1639 from ViktorTigerstrom/2022-07-move-short-to-chan-info
Move `short_to_chan_info` into standalone lock
Jeffrey Czyz [Fri, 24 Jun 2022 21:27:42 +0000 (16:27 -0500)]
Serialization macro for TLV streams
BOLT 12's offer message is encoded as a TLV stream (i.e., a sequence of
TLV records). impl_writeable_tlv_based can't be used because it writes
the overall length of the struct, whereas TLV streams only include the
length of each TLV record. Add a `tlv_stream` macro for defining structs
used in encoding.
TLV records containing a single variable-length type should not encode
the types length in the value since it is redundant. Add a wrapper type
that can be used within a TLV stream to support the correct behavior
during serialization and de-serialization.
Jeffrey Czyz [Fri, 7 Oct 2022 04:12:48 +0000 (23:12 -0500)]
Add WithoutLength wrapper
When serializing variable-length types as part of a TLV stream, the
length does not need to be serialized as it is already encoded in TLV
records. Add a WithoutLength wrapper for this encoding. Replace
VecReadWrapper and VecWriteWrapper with this single type to avoid
redundant encoders.
Jeffrey Czyz [Tue, 9 Aug 2022 22:24:10 +0000 (17:24 -0500)]
Offer message interface and data format
Define an interface for BOLT 12 `offer` messages. The underlying format
consists of the original bytes and the parsed contents.
The bytes are later needed when constructing an `invoice_request`
message. This is because it must mirror all the `offer` TLV records,
including unknown ones, which aren't represented in the contents.
The contents will be used in `invoice_request` messages to avoid
duplication. Some fields while required in a typical user-pays-merchant
flow may not be necessary in the merchant-pays-user flow (i.e., refund).
Jeffrey Czyz [Thu, 6 Oct 2022 18:44:35 +0000 (13:44 -0500)]
Add PrintableString utility
Strings defined by third parties may contain control characters. Provide
a wrapper such that these are replaced when displayed. Useful in node
aliases and offer fields.
Jeffrey Czyz [Fri, 24 Jun 2022 21:40:49 +0000 (16:40 -0500)]
Offer features for BOLT 12
The offer message in BOLT 12 contains a features TLV record. Add a
corresponding OfferFeatures type where the length is not included in the
serialization as it would be redundant with the record length.
Otherwise, define the features to be the same as InvoiceFeatures.
Viktor Tigerström [Thu, 18 Aug 2022 23:07:15 +0000 (01:07 +0200)]
Make `process_pending_htlc_forwards` more readable
Refactor `process_pending_htlc_forwards` to ensure that both branches
that fails `pending_forwards` are placed next to eachother for improved
readability.
Viktor Tigerström [Thu, 18 Aug 2022 22:54:47 +0000 (00:54 +0200)]
Consider `channel_id`s in `short_to_chan_info` as unguaranteed
As the `short_to_chan_info` map has been removed from the
`channel_state`, there is no longer any consistency guarantees between
the `by_id` and `short_to_chan_info` maps. This commit ensures that we
don't force unwrap channels where the channel_id has been queried from
the `short_to_chan_info` map.
Viktor Tigerström [Tue, 26 Jul 2022 22:45:20 +0000 (00:45 +0200)]
Remove excess `channel_state` passing to macros
As the `short_to_chan_info` has been moved out of the `channel_state` to
a standalone lock, several macros no longer need the `channel_state`
passed into the macro.
Viktor Tigerström [Tue, 26 Jul 2022 20:59:24 +0000 (22:59 +0200)]
Move `short_to_chan_info` into standalone lock
As the `channel_state` (`ChannelHolder`) struct will be removed, this
commit moves the `short_to_chan_info` map from that lock into a seperate
lock.
John Cantrell [Fri, 4 Nov 2022 18:15:02 +0000 (14:15 -0400)]
Remove empty match arm during prefix check
Matt Corallo [Fri, 4 Nov 2022 16:31:54 +0000 (16:31 +0000)]
Merge pull request #1831 from benthecarman/hash-ConfirmationTarget
Implement Hash for ConfirmationTarget
benthecarman [Fri, 4 Nov 2022 07:32:45 +0000 (02:32 -0500)]
Implement Hash for ConfirmationTarget
Matt Corallo [Thu, 3 Nov 2022 23:43:03 +0000 (23:43 +0000)]
Merge pull request #1811 from valentinewallace/2022-10-chanman-router
Move `InflightHtlcs` and `Router` trait into `ChannelManager`
Matt Corallo [Thu, 3 Nov 2022 22:38:49 +0000 (22:38 +0000)]
Merge pull request #1761 from TheBlueMatt/2022-10-user-idempotency-token
Provide `send_payment` idempotency guarantees
Valentine Wallace [Thu, 27 Oct 2022 22:00:23 +0000 (18:00 -0400)]
Move InvoicePayer's Router into ChannelManager
This helps prepare to parameterize ChannelManager with a Router, to eventually
use in trampoline payments.
Valentine Wallace [Tue, 25 Oct 2022 00:38:48 +0000 (20:38 -0400)]
Move InFlightHtlcs into ChannelManager
This is part of moving the Router trait into ChannelManager, which will help
allow ChannelManager to fetch routes on-the-fly as part of supporting
trampoline payments.
Matt Corallo [Thu, 3 Nov 2022 17:22:34 +0000 (17:22 +0000)]
Merge pull request #1817 from TheBlueMatt/2022-10-removed-no-score-after
Matt Corallo [Thu, 3 Nov 2022 16:25:55 +0000 (16:25 +0000)]
Merge pull request #1743 from tnull/2022-09-channel-events
Add `ChannelReady` event
Elias Rohrer [Wed, 26 Oct 2022 09:26:23 +0000 (11:26 +0200)]
Fix warnings for ununsed anchor imports
Previously introduced during release commit.
Elias Rohrer [Wed, 26 Oct 2022 09:24:28 +0000 (11:24 +0200)]
Rename chan state `ChannelFunded` to `ChannelReady`
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Elias Rohrer [Tue, 1 Nov 2022 08:57:37 +0000 (09:57 +0100)]
Add `ChannelReady` event
This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
Matt Corallo [Mon, 31 Oct 2022 03:23:02 +0000 (03:23 +0000)]
Add missing break when scoring a path with a missing channel
If we send payments over a path where a channel ended up being
closed, we'll remove it before we call
`ProbabilisticPaymentScorer::payment_path_failed`. This should be
fine, except that `payment_path_failed` does not break out of its
scoring loop if a channel is missing, causing it to assign a
minimum available-liquidity of the payment amount even to channels
which our attempt never arrived at.
The fix is simple - add the missing check and break.
Matt Corallo [Wed, 2 Nov 2022 19:23:27 +0000 (19:23 +0000)]
Merge pull request #1735 from naumenkogs/2022-09-prune-channels-if-either-not-upd
Prune channels if either not updated + track pruning time
Matt Corallo [Wed, 2 Nov 2022 19:23:15 +0000 (19:23 +0000)]
Merge pull request #1753 from wpaulino/avoid-redundant-claims-after-initial-conf
Avoid generating redundant claims after initial confirmation
Wilmer Paulino [Wed, 21 Sep 2022 19:54:28 +0000 (12:54 -0700)]
Avoid generating redundant claims after initial confirmation
These claims will never be valid as a previous claim has already
confirmed. If a previous claim is reorged out of the chain, a new claim
will be generated bypassing the new behavior.
While this doesn't change much for our existing transaction-based
claims, as broadcasting an already confirmed transaction acts as a NOP,
it prevents us from yielding redundant event-based claims, which will be
introduced as part of the anchors patchset.
Gleb Naumenko [Thu, 27 Oct 2022 09:52:34 +0000 (12:52 +0300)]
Track the time a stale channel was pruned
Matt Corallo [Sat, 8 Oct 2022 21:25:44 +0000 (21:25 +0000)]
Add a pending changelog entry for the past few commits
Matt Corallo [Wed, 2 Nov 2022 01:06:39 +0000 (01:06 +0000)]
Allow users to specify the `PaymentId` used in `InvoicePayer`
In order to allow users to pass a custom idempotency key to the
`send*` methods in `InvoicePayer`, we have to pipe the `PaymentId`
through to the `Payer` methods, which we do here.
By default, existing `InvoicePayer` methods use the `PaymentHash`
as the `PaymentId`, however we also add duplicate `send*_with_id`
methods which allow users to pass a custom `PaymentId`.
Finally, appropriate documentation updates are made to clarify
idempotency guarantees.
Matt Corallo [Sun, 30 Oct 2022 00:20:52 +0000 (00:20 +0000)]
Test that PaymentIds are idempotency keys until `abandon_payment`
Matt Corallo [Sat, 8 Oct 2022 19:54:43 +0000 (19:54 +0000)]
Stop timing out payments automatically, requiring abandon_payment
When the `abandon_payment` flow was added there was some concern
that upgrading users may not migrate to the new flow, causing
memory leaks in the pending-payment tracking.
While this is true, now that we're relying on the
pending_outbound_payments map for `send_payment` idempotency, the
risk of removing a payment prematurely goes up from "spurious
retry failure" to "sending a duplicative payment", which is much
worse.
Thus, we simply remove the automated payment timeout here,
explicitly requiring that users call `abandon_payment` when they
give up retrying a payment.
Matt Corallo [Sat, 8 Oct 2022 23:26:18 +0000 (23:26 +0000)]
Delay removal of fulfilled outbound payments for a few timer ticks
Previously, once a fulfilled outbound payment completed and all
associated HTLCs were resolved, we'd immediately remove the payment
entry from the `pending_outbound_payments` map.
Now that we're using the `pending_outbound_payments` map for send
idempotency, this presents a race condition - if the user makes a
redundant `send_payment` call at the same time that the original
payment's last HTLC is resolved, the user would reasonably expect
the `send_payment` call to fail due to our idempotency guarantees.
However, because the `pending_outbound_payments` entry is being
removed, if it completes first the `send_payment` call will
succeed even though the user has not had a chance to see the
corresponding `Event::PaymentSent`.
Instead, here, we delay removal of `Fulfilled`
`pending_outbound_payments` entries until several timer ticks have
passed without any corresponding event or HTLC pending.
Matt Corallo [Thu, 6 Oct 2022 21:31:02 +0000 (21:31 +0000)]
Allow users to specify the `PaymentId` for new outbound payments
In
c986e52ce83e9aeaa9447abebc5f6600470337cf, an `MppId` was added
to `HTLCSource` objects as a way of correlating HTLCs which belong
to the same payment when the `ChannelManager` sees an HTLC
succeed/fail. This allows it to have awareness of the state of all
HTLCs in a payment when it generates the ultimate user-facing
payment success/failure events. This was used in the same PR to
avoid generating duplicative success/failure events for a single
payment.
Because the field was only used as an internal token to correlate
HTLCs, and retries were not supported, it was generated randomly by
calling the `KeysInterface`'s 32-byte random-fetching function.
This also provided a backwards-compatibility story as the existing
HTLC randomization key was re-used for older clients.
In
28eea12bbe0d78d256f79ec725cf02366dce4e36 `MppId` was renamed to
the current `PaymentId` which was then used expose the
`retry_payment` interface, allowing users to send new HTLCs which
are considered a part of an existing payment.
At no point has the payment-sending API seriously considered
idempotency, a major drawback which leaves the API unsafe in most
deployments. Luckily, there is a simple solution - because the
`PaymentId` must be unique, and because payment information for a
given payment is held for several blocks after a payment
completes/fails, it represents an obvious idempotency token.
Here we simply require the user provide the `PaymentId` directly in
`send_payment`, allowing them to use whatever token they may
already have for a payment's idempotency token.
Matt Corallo [Tue, 1 Nov 2022 21:12:30 +0000 (21:12 +0000)]
Merge pull request #1791 from valentinewallace/2022-10-we-are-intro-node
Onion messages: fix edge case where we are the intro node
Gleb Naumenko [Thu, 27 Oct 2022 09:30:44 +0000 (12:30 +0300)]
Prune channels if *either* not updated
Gleb Naumenko [Tue, 1 Nov 2022 08:10:49 +0000 (10:10 +0200)]
Non-mandatory "fix" enabling future tests
valentinewallace [Tue, 1 Nov 2022 00:02:52 +0000 (20:02 -0400)]
Merge pull request #1815 from TheBlueMatt/2022-10-dead-gossip-code
Require directional updates for a DirectionalChannelInfo
Matt Corallo [Mon, 31 Oct 2022 21:28:53 +0000 (21:28 +0000)]
Merge pull request #1818 from TheBlueMatt/2022-10-stable-bench
Use rustc stable for benchmark CI run to fix current breakage
Matt Corallo [Mon, 31 Oct 2022 18:46:31 +0000 (18:46 +0000)]
Use rustc stable for benchmark CI run to fix current breakage
Valentine Wallace [Mon, 31 Oct 2022 16:40:06 +0000 (12:40 -0400)]
OMs: fix panic sending to a two-hop blinded route where we are the intro node
Valentine Wallace [Fri, 21 Oct 2022 19:09:03 +0000 (15:09 -0400)]
Onion messages: fix edge case where we are the introduction node
If we're sending straight to a blinded route with no unblinded intermediate
hops, and we are the introduction node, we need to advance the blinded route by
one hop so that the second hop is the new introduction node.
Matt Corallo [Sat, 29 Oct 2022 18:30:37 +0000 (18:30 +0000)]
Make `htlc_maximum_msat` in `EffectiveCapacity` non-`Option`al
Because we now never generate an `EffectiveCapacity` with an
`htlc_maximum_msat` set to `None`, making it non-`Option`al
effectively removes dead code, which we do here.
Matt Corallo [Sat, 29 Oct 2022 18:24:36 +0000 (18:24 +0000)]
Require directional updates for a `DirectionalChannelInfo`
We currently construct `DirectedChannelInfo`s for routing before
checking if the given direction has its directional info filled in.
We then always check for directional info before actually deciding
to route over a channel, as otherwise we assume the channel is not
online.
This makes for somewhat redundant checks, and `DirectedCHannelInfo`
isn't, by itself, a very useful API. Because fetching the HTLC-max
or effective channel capacity gives spurious data if no directional
info is available, there's little reason to have that data
available, and so we here check for directional info first. This
effectively merges `DirectionalChannelInfo` and
`DirectionalChannelInfoWithUpdate`.
Valentine Wallace [Tue, 25 Oct 2022 00:17:03 +0000 (20:17 -0400)]
Remove unused payment_hash param from Router::find_route
This helps prepare for moving the Router trait into ChannelManager, which will
help allow ChannelManager to retrieve routes for trampoline
Valentine Wallace [Thu, 27 Oct 2022 20:58:30 +0000 (16:58 -0400)]
Fix inaccurate comment in InvoicePayer
Matt Corallo [Thu, 27 Oct 2022 21:34:45 +0000 (21:34 +0000)]
Merge pull request #1809 from valentinewallace/2022-10-custom-om-self
Give us a self when reading a custom onion message
Matt Corallo [Wed, 26 Oct 2022 19:23:10 +0000 (19:23 +0000)]
Give us a self when reading a custom onion message
+ remove MaybeReadableArgs trait as it is now unused
+ remove onion_utils::DecodeInput as it would've now needed to be parameterized
by the CustomOnionMessageHandler trait, and we'd like to avoid either
implementing DecodeInput in messenger or having onion_utils depend on
onion_message::*
Co-authored-by: Matt Corallo <git@bluematt.me>
Co-authored-by: Valentine Wallace <vwallace@protonmail.com>
Matt Corallo [Thu, 27 Oct 2022 16:11:28 +0000 (16:11 +0000)]
Merge pull request #1805 from TheBlueMatt/2022-10-remote-useless-mut
Drop useless `mut` in `KeysInterface::sign_holder_anchor_input`
Matt Corallo [Thu, 27 Oct 2022 16:11:14 +0000 (16:11 +0000)]
Merge pull request #1807 from TheBlueMatt/2022-10-errorkind-bindings
Export io::ErrorKind in bindings
Matt Corallo [Wed, 26 Oct 2022 21:55:23 +0000 (21:55 +0000)]
Export io::ErrorKind in bindings
The bindings have exported `io::Error` as, basically,
`io::ErrorKind`, for quite some time, so there's little reason to
not just export `io::ErrorKind` as well.
Matt Corallo [Wed, 26 Oct 2022 20:46:34 +0000 (20:46 +0000)]
Drop useless `mut` in `KeysInterface::sign_holder_anchor_input`
The `Transaction` is not modified so there's no reason to make the
reference `mut`
valentinewallace [Wed, 26 Oct 2022 17:32:09 +0000 (13:32 -0400)]
Merge pull request #1797 from arik-so/2022-10-channel-manager-deparameterization
Deparametrize `ChannelManager` to infer `Signer` from its `KeysInterface`.
Matt Corallo [Tue, 25 Oct 2022 21:33:34 +0000 (21:33 +0000)]
Merge pull request #1802 from TheBlueMatt/2022-10-112
Add release date and release name to CHANGELOG for 0.0.112
Matt Corallo [Tue, 25 Oct 2022 18:59:41 +0000 (18:59 +0000)]
Refer to `lnd` as `LND` in CHANGELOG
for consistency since its an abbreviation for "lightning network
daemon".
Matt Corallo [Tue, 25 Oct 2022 18:58:54 +0000 (18:58 +0000)]
Add release date and release name to CHANGELOG for 0.0.112
Matt Corallo [Tue, 25 Oct 2022 18:57:01 +0000 (18:57 +0000)]
Merge pull request #1798 from TheBlueMatt/2022-10-112
Cut 0.0.112
Arik Sosman [Mon, 24 Oct 2022 19:11:12 +0000 (12:11 -0700)]
Deparametrize `ChannelManager` to infer `Signer` from its `KeysInterface`.
Viktor Tigerström [Tue, 5 Apr 2022 22:49:08 +0000 (00:49 +0200)]
Only create BOLT4 tlv payload format onions
Matt Corallo [Mon, 24 Oct 2022 18:50:47 +0000 (18:50 +0000)]
Add release notes for 0.0.112
Valentine Wallace [Fri, 21 Oct 2022 19:08:04 +0000 (15:08 -0400)]
Remove outdated allow(unused)
Matt Corallo [Mon, 24 Oct 2022 17:13:56 +0000 (17:13 +0000)]
Bump crate versions to 0.0.112/invoice 0.20
Matt Corallo [Mon, 24 Oct 2022 18:12:30 +0000 (18:12 +0000)]
Do not export new anchors structs in `events.rs` without anchors
This avoids adding unused, effectively-dummy public structs in
`events.rs`.
Matt Corallo [Mon, 24 Oct 2022 17:37:25 +0000 (17:37 +0000)]
Merge pull request #1779 from valentinewallace/2022-10-node-pk-keysinterface
Add `KeysInterface::get_node_id` method
Valentine Wallace [Sat, 22 Oct 2022 00:30:49 +0000 (20:30 -0400)]
KeysInterface docs: note that Recipient type must be supported by impl
Matt Corallo [Sat, 22 Oct 2022 01:05:26 +0000 (01:05 +0000)]
Merge pull request #1780 from wpaulino/rust-edition-2018
Wilmer Paulino [Thu, 13 Oct 2022 06:35:48 +0000 (02:35 -0400)]
Bump workspace to rust edition 2018
Mostly motivated by the need of async/await.
Valentine Wallace [Tue, 18 Oct 2022 19:28:18 +0000 (15:28 -0400)]
Add KeysInterface::get_node_id method
Useful since we're working on getting rid of KeysInterface::get_node_secret to
complete support for remote signing.
Will be used in upcoming work to check whether an outbound onion message
blinded path has our node id as the introduction node id
valentinewallace [Fri, 21 Oct 2022 17:04:45 +0000 (13:04 -0400)]
Merge pull request #1770 from jkczyz/2022-10-debug-route-hints
Add logging in route hint filtering
valentinewallace [Fri, 21 Oct 2022 15:28:15 +0000 (11:28 -0400)]
Merge pull request #1788 from TheBlueMatt/2022-10-mtlc-writer
Add `WriteableScore` bindings impl for `MultiThreadedLockableScore`
Matt Corallo [Thu, 29 Sep 2022 15:22:47 +0000 (15:22 +0000)]
Add `WriteableScore` bindings impl for `MultiThreadedLockableScore`
In
56b07e52aabdaca521987e765f1fa864966a5d49 we made
`MultiThreadedLockableScore` fully bindings-compatible. However, it
did not add a `WriteableScore` implementation for it. This was an
oversight as it is a `WriteableScore` in Rust and needs to be for
use in other parts of the API.
Here we add the required impl in a way that the bindings generator
is able to handle it and add conversion utilities.
Jeffrey Czyz [Fri, 14 Oct 2022 14:31:36 +0000 (10:31 -0400)]
Add logging in route hint filtering
Knowing why a channel was not included as an invoice route hint can be
valuable. Add logging on the decisions made when filtering channels.
Jeffrey Czyz [Wed, 19 Oct 2022 22:15:33 +0000 (17:15 -0500)]
Merge pull request #1748 from valentinewallace/2022-10-custom-oms
Support custom onion messages
Valentine Wallace [Tue, 18 Oct 2022 17:33:45 +0000 (13:33 -0400)]
Disallow sending invalid custom OM TLVs
Onion message data TLV types must be >= 64, enforce this on send
Valentine Wallace [Tue, 18 Oct 2022 17:29:43 +0000 (13:29 -0400)]
Implement sending and receiving custom onion messages
This uses the work done in the preceding commits to implement encoding a user's
custom TLV in outbound onion messages, and decoding custom TLVs in inbound
onion messages, to be provided to the new CustomOnionMessageHandler.
Matt Corallo [Wed, 19 Oct 2022 16:55:01 +0000 (16:55 +0000)]
Merge pull request #1678 from TheBlueMatt/2022-08-funding-locked-mon-persist-fail
Handle async initial ChannelMonitor persistence failing on restart
Matt Corallo [Wed, 5 Oct 2022 00:34:38 +0000 (00:34 +0000)]
Rename `ChannelState::MonitorUpdateFailed` `MonitorUpdateInProgress`
As we're moving towards monitor update async being a supported
use-case, we shouldn't call an async monitor update "failed", but
rather "in progress". This simply updates the internal channel.rs
enum name to reflect the new thinking.
Matt Corallo [Sat, 20 Aug 2022 01:03:27 +0000 (01:03 +0000)]
Handle async initial ChannelMonitor persistence failing on restart
If the initial ChannelMonitor persistence is done asynchronously
but does not complete before the node restarts (with a
ChannelManager persistence), we'll start back up with a channel
present but no corresponding ChannelMonitor.
Because the Channel is pending-monitor-update and has not yet
broadcasted its initial funding transaction or sent channel_ready,
this is not a violation of our API contract nor a safety violation.
However, the previous code would refuse to deserialize the
ChannelManager treating it as an API contract violation.
The solution is to test for this case explicitly and drop the
channel entirely as if the peer disconnected before we received
the funding_signed for outbound channels or before sending the
channel_ready for inbound channels.
valentinewallace [Wed, 19 Oct 2022 14:22:07 +0000 (10:22 -0400)]
Merge pull request #1769 from TheBlueMatt/2022-10-disconnected-hints
Include all channel route hints if no connected channels exist
Jeffrey Czyz [Wed, 19 Oct 2022 13:50:09 +0000 (08:50 -0500)]
Merge pull request #1764 from G8XSU/rgs-ignore-error
Ignore Duplicate Gossip Error while updating networkGraph from RGS
Jeffrey Czyz [Wed, 19 Oct 2022 13:46:07 +0000 (08:46 -0500)]
Merge pull request #1777 from lexe-tech/max/best-block-header-best-block
Add `.to_best_block()` method to `ValidatedBlockHeader`
Matt Corallo [Wed, 19 Oct 2022 00:29:57 +0000 (00:29 +0000)]
Merge pull request #1689 from wpaulino/anchors-bump-channel-close-event
Jeffrey Czyz [Thu, 13 Oct 2022 20:49:58 +0000 (16:49 -0400)]
Clean up private channel route hint filtering
Max Fang [Tue, 18 Oct 2022 01:38:26 +0000 (18:38 -0700)]
Add `ValidatedBlockHeader::to_best_block`
Matt Corallo [Thu, 13 Oct 2022 21:57:09 +0000 (21:57 +0000)]
Include all channel route hints if no connected channels exist
Mobile clients often take a second or two before they reconnect to
their peers as its not always clear immediately that connections
have been killed (especially on iOS). This can cause us to
spuriously fail to include route hints in our invoices if we're on
mobile.
The fix is simple, if we're selecting channels to include in route
hints and we're not not connected to the peer for any of our
channels, we should simply include the hints for all channels, even
though we're disconencted.
Fixes #1768.
Wilmer Paulino [Tue, 11 Oct 2022 18:46:24 +0000 (14:46 -0400)]
Add public helper to build anchor input witnesses
Wilmer Paulino [Wed, 13 Jul 2022 17:39:40 +0000 (10:39 -0700)]
Add holder anchor signing support to BaseSign
Wilmer Paulino [Tue, 11 Oct 2022 18:39:32 +0000 (14:39 -0400)]
Document expected call frequency of ChainMonitor::process_pending_events
Wilmer Paulino [Wed, 31 Aug 2022 18:39:47 +0000 (11:39 -0700)]
Yield channel close bump events
Wilmer Paulino [Wed, 31 Aug 2022 18:35:55 +0000 (11:35 -0700)]
Generate ClaimEvent for HolderFundingOutput inputs from anchor channels
Wilmer Paulino [Wed, 27 Jul 2022 22:15:34 +0000 (15:15 -0700)]
Refactor generate_claim_tx to return OnchainClaim enum
Wilmer Paulino [Wed, 31 Aug 2022 18:07:45 +0000 (11:07 -0700)]
Split finalize_package into separate methods per malleability
Wilmer Paulino [Wed, 27 Jul 2022 21:58:43 +0000 (14:58 -0700)]
Track funding amount in HolderFundingOutput
This will be useful later on when determining the appropriate fee rate
to use on the anchor transaction to bump its commitment transaction.