Jeffrey Czyz [Sun, 16 Jan 2022 16:16:19 +0000 (10:16 -0600)]
Benchmark zero-penalty scorer
Jeffrey Czyz [Mon, 17 Jan 2022 03:07:57 +0000 (21:07 -0600)]
Benchmark router using a scorer seeded with data
Scorers may have different performance characteristics after seeing
failed and successful paths. Seed the scorer with some random data
before executing the benchmark in order to exercise such behavior.
Jeffrey Czyz [Sun, 16 Jan 2022 16:04:11 +0000 (10:04 -0600)]
Add first_hops to generate_routes benchmarks
Passing first_hops to get_route increases the coverage of the benchmark
test. For scorers needing the sending node, it allows for using a single
scorer in the benchmark rather than re-initializing on each iteration.
As a consequence, the scorer can be seeded with success and failure
data.
Jeffrey Czyz [Fri, 14 Jan 2022 18:28:30 +0000 (12:28 -0600)]
Remove duplicate generate_routes benchmark code
Refactor generate_routes and generate_mpp_routes into a single utility
for benchmarking. The utility is parameterized with features in order to
test both single path and multi-path routing. Additionally, it is
parameterized with a Score to be used with other scorers.
Devrandom [Wed, 19 Jan 2022 11:19:27 +0000 (12:19 +0100)]
Provide preimages to signer
Devrandom [Tue, 18 Jan 2022 13:17:52 +0000 (14:17 +0100)]
Keep track of preimage in OutboundHTLCState on success
valentinewallace [Mon, 24 Jan 2022 16:39:58 +0000 (11:39 -0500)]
Merge pull request #1272 from lightning-signer/2022-01-sign-invoice-api
Improve KeysInterface::sign_invoice API
valentinewallace [Mon, 24 Jan 2022 16:34:48 +0000 (11:34 -0500)]
Merge pull request #1271 from tnull/rename_payee_struct
Rename `Payee` to `PaymentParameters`
valentinewallace [Mon, 24 Jan 2022 16:23:12 +0000 (11:23 -0500)]
Merge pull request #1253 from TheBlueMatt/2022-01-background-persist-exit
Persist `ChannelManager` before `BackgroundProcessor` exits
Devrandom [Fri, 21 Jan 2022 10:33:39 +0000 (11:33 +0100)]
Improve KeysInterface::sign_invoice API
split hrp from invoice data, to allow parsing, since there is no delimiter between the two parts
Matt Corallo [Sat, 22 Jan 2022 18:19:35 +0000 (18:19 +0000)]
Merge pull request #1250 from vss96/sanity_check
Sanity check for ChannelManager and KeysInterface
vss96 [Tue, 18 Jan 2022 12:00:19 +0000 (17:30 +0530)]
Sanity check for ChannelManager and KeysInterface
Fix build errors
Create script using p2wsh for comparison
Using p2wpkh for generating the payment script
spendable_outputs sanity check
Return err in spendable_outputs
Doc updates in keysinterface
valentinewallace [Fri, 21 Jan 2022 16:52:05 +0000 (11:52 -0500)]
Merge pull request #1269 from TheBlueMatt/022-01-no-disconnect-on-slow-persist
Avoid disconnecting all peers if user code is slow
Elias Rohrer [Fri, 21 Jan 2022 09:39:01 +0000 (10:39 +0100)]
Rename `Payee` to `PaymentParameters`
Matt Corallo [Thu, 20 Jan 2022 23:42:56 +0000 (23:42 +0000)]
Increase our PING_TIMER to ten seconds, from five.
Because many lightning nodes can take quite some time to respond to
pings, the five second ping timer can sometimes cause spurious
disconnects even though a peer is online. However, in part as a
response to mobile users where a connection may be lost as result
of only a short time with the app in a "paused" state, we had a
rather aggressive ping time to ensure we would disconnect quickly.
However, since we now just used a fixed time for the "went to
sleep" detection, we can somewhat increase the ping timer. We still
want to be fairly aggressive to avoid sending HTLCs to a peer that
is offline, but the tradeoff between spurious disconnections and
stuck payments is likely doesn't need to be quite as aggressive.
Matt Corallo [Sun, 26 Sep 2021 00:09:17 +0000 (00:09 +0000)]
Avoid disconnecting all peers if user code is slow
In the sample client (and likely other downstream users), event
processing may block on slow operations (e.g. Bitcoin Core RPCs)
and ChannelManager persistence may take some time. This should be
fine, except that we consider this a case of possible backgrounding
and disconnect all of our peers when it happens.
Instead, we here avoid considering event processing time in the
time between PeerManager events.
Jeffrey Czyz [Thu, 20 Jan 2022 16:36:22 +0000 (10:36 -0600)]
Merge pull request #1234 from tnull/limit_max_cltv_delta
Limit maximum CLTV delta during routing
Matt Corallo [Thu, 20 Jan 2022 16:34:01 +0000 (16:34 +0000)]
Merge pull request #1248 from naveensrinivasan/naveen/feat/update-readme
Docs: Updated README to include crates information
Elias Rohrer [Thu, 20 Jan 2022 15:00:00 +0000 (16:00 +0100)]
Limit maximum total CLTV expiry delta during routing.
naveen [Tue, 18 Jan 2022 02:43:45 +0000 (02:43 +0000)]
Docs: Updated README to include crates information
Included crates information into README.
valentinewallace [Wed, 19 Jan 2022 18:19:59 +0000 (13:19 -0500)]
Merge pull request #1258 from lightningdevkit/dependabot/cargo/hex-0.4
Update hex requirement from 0.3 to 0.4
Elias Rohrer [Wed, 19 Jan 2022 17:15:47 +0000 (18:15 +0100)]
Fixed some typos
Matt Corallo [Tue, 18 Jan 2022 21:48:28 +0000 (21:48 +0000)]
Persist `ChannelManager` before `BackgroundProcessor` exits
Fixes #1237.
dependabot[bot] [Tue, 18 Jan 2022 22:05:49 +0000 (22:05 +0000)]
Update hex requirement from 0.3 to 0.4
Updates the requirements on [hex](https://github.com/KokaKiwi/rust-hex) to permit the latest version.
- [Release notes](https://github.com/KokaKiwi/rust-hex/releases)
- [Commits](https://github.com/KokaKiwi/rust-hex/compare/v0.3...v0.4.3)
---
updated-dependencies:
- dependency-name: hex
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Arik Sosman [Tue, 18 Jan 2022 22:04:38 +0000 (14:04 -0800)]
Merge pull request #1243 from naveensrinivasan/naveensrinivasan/dependabot
Enable Dependabot
Naveen [Mon, 17 Jan 2022 01:32:04 +0000 (19:32 -0600)]
Create dependabot.yml
Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
valentinewallace [Tue, 18 Jan 2022 16:18:05 +0000 (11:18 -0500)]
Merge pull request #1249 from tnull/fix_compile_warnings
Fix compiler warning during building/testing.
Elias Rohrer [Tue, 18 Jan 2022 13:45:43 +0000 (14:45 +0100)]
Fix unused return warning for 'transmute_copy'.
Matt Corallo [Fri, 14 Jan 2022 16:59:42 +0000 (16:59 +0000)]
Merge pull request #1238 from TheBlueMatt/2022-01-lockorder-checks
Fix and test lockorder
Matt Corallo [Thu, 13 Jan 2022 01:00:43 +0000 (01:00 +0000)]
Check lockorders in tests with a trivial lockorder tracker
Matt Corallo [Fri, 14 Jan 2022 04:10:14 +0000 (04:10 +0000)]
Merge pull request #1229 from lightning-signer/2021-12-htlc-anchor-sighashtype
anchors: Fix SigHashType and weight calculations for anchors
Ken Sedgwick [Thu, 13 Jan 2022 02:29:05 +0000 (18:29 -0800)]
Fixed comment on weight_received_htlc
Ken Sedgwick [Thu, 13 Jan 2022 01:10:07 +0000 (17:10 -0800)]
Set opt_anchors for calls to CommitmentTransaction::new_with_auxiliary_htlc_data
Ken Sedgwick [Tue, 4 Jan 2022 22:53:44 +0000 (14:53 -0800)]
Add anchor tests to outbound_commitment_test
Ken Sedgwick [Wed, 5 Jan 2022 00:05:28 +0000 (16:05 -0800)]
Debit funder's output to cover anchors
Ken Sedgwick [Wed, 5 Jan 2022 21:40:08 +0000 (13:40 -0800)]
Convert HTLC_{SUCCESS,TIMEOUT}_TX_WEIGHT to anchor-aware functions
Ken Sedgwick [Tue, 4 Jan 2022 23:54:54 +0000 (15:54 -0800)]
Convert COMMITMENT_TX_BASE_WEIGHT to anchor-aware function
Ken Sedgwick [Sun, 2 Jan 2022 23:00:54 +0000 (15:00 -0800)]
Add unit test coverage for package::weight_{offered,received}_htlc
Ken Sedgwick [Fri, 31 Dec 2021 20:21:22 +0000 (12:21 -0800)]
make WEIGHT{_REVOKED,}_{OFFERED,RECEIVED}_HTLC functions with opt_anchors parameter
Ken Sedgwick [Fri, 31 Dec 2021 16:47:38 +0000 (08:47 -0800)]
Isolated channelmonitor weight unit tests and added anchor loops
Ken Sedgwick [Wed, 29 Dec 2021 04:37:20 +0000 (20:37 -0800)]
Set the SigHashType of remote htlc signatures w/ anchors to SinglePlusAnyoneCanPay
Matt Corallo [Thu, 13 Jan 2022 01:51:29 +0000 (01:51 +0000)]
Fix some (non-bug) lock-order-inversions in tests
Matt Corallo [Wed, 12 Jan 2022 19:58:08 +0000 (19:58 +0000)]
Make lockorder consistent in channelmanager
This resolves a lockorder inversion in
`ChannelManager::finalize_claims` where `pending_outbound_payments`
is locked after `pending_events`, opposite of, for example, the
lockorder in `ChannelManager::fail_htlc_backwards_internal` where
`pending_outbound_payments` is locked at the top of the
`HTLCSource::OutboundRoute` handling and then `pending_events` is
locked at the end.
Matt Corallo [Tue, 11 Jan 2022 22:52:44 +0000 (22:52 +0000)]
Merge pull request #1013 from TheBlueMatt/2021-07-warning-msgs
Matt Corallo [Fri, 7 Jan 2022 20:11:31 +0000 (20:11 +0000)]
Rely on Error/Warning message data lengths being correct
In https://github.com/lightning/bolts/pull/950, the (somewhat
strange) requirement that error messages be handled even if the
length field is set larger than the size of the package was
removed. Here we change the code to drop the special handling for
this, opting to just fail to read the message if the length is
incorrect.
Matt Corallo [Fri, 7 Jan 2022 20:30:50 +0000 (20:30 +0000)]
Send `warning` instead of `error` when we incounter bogus gossip
Matt Corallo [Thu, 30 Sep 2021 22:45:07 +0000 (22:45 +0000)]
Convert `shutdown` invalid script checks to warning messages
As required by the warning messages PR, we should simply warn our
counterparty in this case and let them try again, continuing to try
to use the channel until they tell us otherwise.
Matt Corallo [Thu, 22 Jul 2021 16:06:33 +0000 (16:06 +0000)]
Send warning messages when appropriate in gossip handling pipeline
Matt Corallo [Thu, 22 Jul 2021 16:05:48 +0000 (16:05 +0000)]
Handle sending and receiving warning messages
Matt Corallo [Thu, 22 Jul 2021 15:25:13 +0000 (15:25 +0000)]
Add a new `WarningMessage` message to send and receive warnings
Matt Corallo [Mon, 10 Jan 2022 18:34:40 +0000 (18:34 +0000)]
Merge pull request #1230 from lightning-signer/2021-01-invoice-bech32-dep
Do not turn on bech32/std by default for lightning-invoice
Devrandom [Sun, 9 Jan 2022 11:26:14 +0000 (12:26 +0100)]
Do not turn on bech32/std by default for lightning-invoice
Matt Corallo [Thu, 6 Jan 2022 19:25:36 +0000 (19:25 +0000)]
Merge pull request #1223 from lightning-signer/2021-12-invoice-nostd
Adapt lightning-invoice to no_std
Devrandom [Wed, 22 Dec 2021 16:43:25 +0000 (17:43 +0100)]
Adapt lightning-invoice to no_std
Matt Corallo [Wed, 5 Jan 2022 21:01:06 +0000 (21:01 +0000)]
Merge pull request #1226 from TheBlueMatt/2022-01-bindings-no-std
Support building `cfg=c_bindings` with `no-std`
Matt Corallo [Tue, 4 Jan 2022 22:34:15 +0000 (22:34 +0000)]
Support building `cfg=c_bindings` with `no-std`
This will be needed for JavaScript bindings eventually.
Matt Corallo [Mon, 3 Jan 2022 19:54:20 +0000 (19:54 +0000)]
Merge pull request #1220 from TheBlueMatt/2021-12-stale-update-gossip-log
Log gossip rejections due to stale channel_updates at GOSSIP level
Matt Corallo [Wed, 29 Dec 2021 19:57:05 +0000 (19:57 +0000)]
Merge pull request #1225 from hackerrdave/update-repo-lightningdevkit
update repo name to use lightningdevkit
hackerrdave [Mon, 27 Dec 2021 03:53:16 +0000 (22:53 -0500)]
update repo name to use lightningdevkit
Matt Corallo [Sun, 19 Dec 2021 23:55:09 +0000 (23:55 +0000)]
Merge pull request #1218 from TheBlueMatt/2021-12-minor-bindings-tweaks
Minor Bindings Tweaks
Matt Corallo [Sun, 19 Dec 2021 20:13:38 +0000 (20:13 +0000)]
Log gossip rejections due to stale channel_updates at GOSSIP level
This further reduces noise at the TRACE level during initial gossip
sync.
Matt Corallo [Sat, 18 Dec 2021 19:52:11 +0000 (19:52 +0000)]
Swap around generic argument ordering in InvoicePayer for bindings
The bindings generation really should support generic bounds other
than Deref::Target in where clauses, but currently does not. To
avoid needing to add support during the current release process,
we simply swap around the arguments to move them to the first <>
instead of the where.
Matt Corallo [Sat, 18 Dec 2021 03:43:34 +0000 (03:43 +0000)]
Add a C-not exported tag to `NetGraphMsgHandler.network_graph`
Matt Corallo [Sat, 18 Dec 2021 03:38:15 +0000 (03:38 +0000)]
Add a constructor to MultiThreadedLockableScore
...as otherwise the struct is rather useless.
Matt Corallo [Fri, 17 Dec 2021 23:30:54 +0000 (23:30 +0000)]
Merge pull request #1217 from TheBlueMatt/2021-12-0.0.104
Cut 0.0.104
Matt Corallo [Fri, 17 Dec 2021 22:38:46 +0000 (22:38 +0000)]
Swap around generic argument ordering in DefaultRouter for bindings
The bindings generation really should support default generic types
in where clauses, but currently does not. To avoid needing to add
support during the current release process, we simply swap around
the arguments to move them to the first <> instead of the where.
Matt Corallo [Fri, 17 Dec 2021 21:28:24 +0000 (21:28 +0000)]
Bump versions to 0.0.104/invoice 0.12
Matt Corallo [Fri, 17 Dec 2021 01:49:39 +0000 (01:49 +0000)]
Update CHANGELOG for 0.0.104
Matt Corallo [Fri, 17 Dec 2021 17:34:47 +0000 (17:34 +0000)]
Merge pull request #1216 from valentinewallace/2021-12-preimage-getter
Add utility for retrieving an LDK payment preimage
Matt Corallo [Fri, 17 Dec 2021 00:32:28 +0000 (00:32 +0000)]
Remove trailing whitespace in the FeeEstimator interface
Valentine Wallace [Mon, 13 Dec 2021 23:40:16 +0000 (18:40 -0500)]
inbound_payment: Add utility to get payment preimage given hash/secret
User-requested feature
Valentine Wallace [Mon, 13 Dec 2021 22:36:09 +0000 (17:36 -0500)]
inbound_payment: DRY verify method for use in getting preimage
in the next commit(s)
Valentine Wallace [Fri, 17 Dec 2021 00:27:13 +0000 (16:27 -0800)]
create_inbound_payment: warn about dup hashes
Leftover feedback from #1177
Valentine Wallace [Fri, 17 Dec 2021 00:24:24 +0000 (16:24 -0800)]
Salt inbound payment ExpandedKey
Leftover feedback from #1177
Matt Corallo [Fri, 17 Dec 2021 00:15:24 +0000 (00:15 +0000)]
Merge pull request #1177 from valentinewallace/2021-11-derivable-payment-secret
Stop storing pending inbound payment data; instead make it derivable on receive
Valentine Wallace [Thu, 9 Dec 2021 22:41:33 +0000 (17:41 -0500)]
Add new invoice CreationError::InvalidAmount for use in checking `create_inbound_payment`
in an invoice creation utility. Note that if the error type of `create_inbound_payment` ever
changed, we'd be forced to update the invoice utility's callsite to handle the new error
Valentine Wallace [Tue, 30 Nov 2021 00:59:18 +0000 (19:59 -0500)]
Drop need to store pending inbound payments
and replace payment_secret with encrypted metadata
See docs on `inbound_payment::verify` for details
Also add min_value checks to all create_inbound_payment* methods
Valentine Wallace [Tue, 30 Nov 2021 00:36:59 +0000 (19:36 -0500)]
Add get_single_block to chacha20 module
In the next commit, we'll want to get a single block from a chacha stream that
takes a 16-byte nonce.
Valentine Wallace [Mon, 22 Nov 2021 21:53:18 +0000 (16:53 -0500)]
Macro-ize checking that the total value of an MPP's parts is sane
This DRY-ed code will be used in upcoming commits when we stop storing inbound
payment data
Valentine Wallace [Mon, 29 Nov 2021 17:50:47 +0000 (12:50 -0500)]
Add get_inbound_payment_key_material to KeysInterface
This will allow us to retrieve key material for encrypting/decrypting inbound
payment info, in upcoming commits
Matt Corallo [Thu, 16 Dec 2021 23:04:00 +0000 (23:04 +0000)]
Merge pull request #1212 from TheBlueMatt/2021-12-timeout-graph
Add a method to prune stale channels from NetworkGraph
Matt Corallo [Wed, 15 Dec 2021 18:59:15 +0000 (18:59 +0000)]
Automatically prune NetworkGraph of stale channels hourly in BP
Matt Corallo [Tue, 14 Dec 2021 01:33:37 +0000 (01:33 +0000)]
Reject channel_update messages with timestamps too old or new
Because we time out channel info that is older than two weeks now,
we should also reject new channel info that is older than two
weeks, in addition to rejecting future channel info.
Matt Corallo [Fri, 10 Dec 2021 06:46:29 +0000 (06:46 +0000)]
Add a method to prune stale channels from `NetworkGraph`
We define "stale" as "haven't heard an updated channel_update in
two weeks", as described in BOLT 7.
We also filter out stale channels at write-time for `std` users, as
we can look up the current time.
Matt Corallo [Fri, 10 Dec 2021 05:57:30 +0000 (05:57 +0000)]
Drop `allow_wallclock_use` feature in favor of simply using `std`
Fixes #1147.
Matt Corallo [Wed, 15 Dec 2021 22:38:13 +0000 (22:38 +0000)]
DRY up network_graph tests substantially with message creation fns
Matt Corallo [Thu, 16 Dec 2021 17:44:21 +0000 (17:44 +0000)]
Merge pull request #1214 from TheBlueMatt/2021-12-fix-tokio-msrv-bump
Matt Corallo [Thu, 16 Dec 2021 02:21:48 +0000 (02:21 +0000)]
Build no-std on 1.47 now that core2 supports it
Matt Corallo [Thu, 16 Dec 2021 02:10:09 +0000 (02:10 +0000)]
Pin tokio to 1.14.0 in CI for older rustc's
Matt Corallo [Wed, 15 Dec 2021 23:32:30 +0000 (23:32 +0000)]
Merge pull request #1148 from dunxen/2021-11-new-onion-errors
Add mpp_timeout and invalid_onion_payload descriptions
Conor Okus [Wed, 15 Dec 2021 16:15:21 +0000 (16:15 +0000)]
Merge pull request #1211 from ConorOkus/2021-11-add-max-conversion
Update docs to add max return value to conversion list
Matt Corallo [Wed, 15 Dec 2021 04:58:46 +0000 (04:58 +0000)]
Merge pull request #1202 from TheBlueMatt/2021-12-fix-retries-races
Fix payment retry races and inform users when a payment fails
Matt Corallo [Mon, 13 Dec 2021 17:41:36 +0000 (17:41 +0000)]
Make attempting to retry a succeeded payment an APIError, not Route
This is symmetric with the new failure once a payment is abandoned.
Matt Corallo [Sat, 4 Dec 2021 23:41:37 +0000 (23:41 +0000)]
Use `Event::PaymentFailed` in `InvoicePayer` to remove retry count
This finally fixes the bug described in the previous commits where
we retry a payment after its retry count has expired due to early
removal of the payment from the retry count tracking map. A test is
also added which demonstrates the bug in previous versions and
which passes now.
Fixes #1164.
Matt Corallo [Fri, 10 Dec 2021 00:28:24 +0000 (00:28 +0000)]
Expose an event when a payment has failed and retries complete
When a payment fails, a payer needs to know when they can consider
a payment as fully-failed, and when only some of the HTLCs in the
payment have failed. This isn't possible with the current event
scheme, as discovered recently and as described in the previous
commit.
This adds a new event which describes when a payment is fully and
irrevocably failed, generating it only after the payment has
expired or been marked as expired with
`ChannelManager::mark_retries_exceeded` *and* all HTLCs for it
have failed. With this, a payer can more simply deduce when a
payment has failed and use that to remove payment state or
finalize a payment failure.
Matt Corallo [Fri, 3 Dec 2021 19:57:37 +0000 (19:57 +0000)]
Add a variant to `PendingOutboundPayment` for retries-exceeded
When a payer gives up trying to retry a payment, they don't know
for sure what the current state of the event queue is.
Specifically, they cannot be sure that there are not multiple
additional `PaymentPathFailed` or even `PaymentSuccess` events
pending which they will see later. Thus, they have a very hard
time identifying whether a payment has truly failed (and informing
the UI of that fact) or if it is still pending. See [1] for more
information.
In order to avoid this mess, we will resolve it here by having the
payer give `ChannelManager` a bit more information - when they
have given up on a payment - and using that to generate a
`PaymentFailed` event when all paths have failed.
This commit adds the neccessary storage and changes for the new
state inside `ChannelManager` and a public method to mark a payment
as failed, the next few commits will add the new `Event` and use
the new features in our `PaymentRetrier`.
[1] https://github.com/lightningdevkit/rust-lightning/issues/1164
Matt Corallo [Sat, 4 Dec 2021 23:41:01 +0000 (23:41 +0000)]
DRY up payment failure macros in functional_test_utils
... with a more extensible expectation-checking framework for them.
Duncan Dean [Sat, 30 Oct 2021 08:25:44 +0000 (10:25 +0200)]
Add mpp_timeout and invalid_onion_payload descriptions & handling
Conor Okus [Wed, 8 Dec 2021 17:15:57 +0000 (17:15 +0000)]
Updates Fee estimator docs to include a max return value for get_est_sat_per_1000_weight
Updates docs to include a max return value for get_est_sat_per_1000_weight
Adds max to both conversions
Additional detail
Matt Corallo [Thu, 9 Dec 2021 18:21:55 +0000 (18:21 +0000)]
Merge pull request #1169 from TheBlueMatt/2021-11-fix-update-announcements
Fix announcements of our own gossip