lnd/lnwire
positiveblue fbe79811cf
invoicesrpc: refactor addinvocie hop hint selection
In order to reduce the number of calls to the db we try to process as
few channels as we can + try to not do extra work for each of them.

- First fetch all the channels. Then, filter all the public ones and
  sort the potential candidates by remote balance.

- Filter out each potential candidate as soon as possible.

- Only check the alias if the channel supports scid aliases.

- Because we sort the channels by remote balance, we will hit the
  target amount, if possible, as soon as we can.

We do not want to leak information about our remote balances, so we
shuffle the hop hints (the forced ones go always first) so the invoice
receiver does not know which channels have more balance than others.
2022-09-30 06:55:10 -07:00
..
accept_channel_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
accept_channel.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
announcement_signatures.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
channel_announcement.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
channel_id_test.go lnwire: fix minor typo in tests 2017-09-18 19:46:16 +02:00
channel_id.go lnwire: fixing buffer size and cleaning up uint16/32 conversion 2019-12-05 16:28:25 +01:00
channel_reestablish.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
channel_type_test.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
channel_type.go lnwire: introduce new explicit ChannelType TLV record 2021-08-30 19:17:19 -07:00
channel_update.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
closing_signed.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
commit_sig.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
custom.go lnrpc: send custom message 2021-10-15 17:08:53 +02:00
error.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
extra_bytes_test.go multi: move many t.Fatalf calls to require.NoError 2022-06-17 04:26:55 +00:00
extra_bytes.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
features_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
features.go lnwire+feature: add awareness of option_shutdown_anysegwit 2022-08-10 18:44:26 -07:00
funding_created.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
funding_locked.go lnwire: add alias to FundingLocked in TLV 2022-07-07 17:10:27 -04:00
funding_signed.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
gossip_timestamp_range.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
init_message.go lnwire: refactor Encode to use specific writers - I 2021-08-10 05:36:09 +08:00
lnwire_test.go lnwire: add warning message wrapping existing Error message structure 2022-05-16 13:51:29 -04:00
lnwire.go lnwire: store unknown address type as OpaqueAddrs 2022-05-04 11:06:11 +02:00
message_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
message.go lnwire: add warning message wrapping existing Error message structure 2022-05-16 13:51:29 -04:00
msat_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
msat.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
netaddress_test.go multi: move many t.Fatalf calls to require.NoError 2022-06-17 04:26:55 +00:00
netaddress.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
node_announcement_test.go lnwire: add test cases for node alias validation 2019-01-07 12:53:40 -08:00
node_announcement.go lnwire: refactor Encode to use specific writers - II 2021-08-10 05:36:09 +08:00
onion_error_test.go multi: move many t.Fatalf calls to require.NoError 2022-06-17 04:26:55 +00:00
onion_error.go multi: run gosimports 2022-02-10 11:02:01 +01:00
opaque_addrs.go lnwire: add new type OpaqueAddrs 2022-05-04 11:06:11 +02:00
open_channel.go multi: fix make fmt 2022-08-23 22:10:24 +08:00
ping.go lnwire+peer: clamp pong bytes, make ping handler more effcieint 2022-01-13 15:01:18 -08:00
pong.go lnwire+peer: clamp pong bytes, make ping handler more effcieint 2022-01-13 15:01:18 -08:00
query_channel_range.go lnwire: refactor Encode to use specific writers - II 2021-08-10 05:36:09 +08:00
query_short_chan_ids_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
query_short_chan_ids.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
README.md multi: unify code blocks in READMEs 2021-01-22 09:14:11 +01:00
reply_channel_range_test.go lnwire: prep wire messages for TLV extensions 2021-02-24 17:31:55 +01:00
reply_channel_range.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
reply_short_chan_ids_end.go lnwire: refactor Encode to use specific writers - II 2021-08-10 05:36:09 +08:00
revoke_and_ack.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
short_channel_id_test.go lnwire: add alias to FundingLocked in TLV 2022-07-07 17:10:27 -04:00
short_channel_id.go invoicesrpc: refactor addinvocie hop hint selection 2022-09-30 06:55:10 -07:00
shutdown.go lnwire: refactor Encode to use specific writers - II 2021-08-10 05:36:09 +08:00
signature_test.go lnwire: add length validation in NewSigFromRawSignature 2022-03-11 12:31:49 +08:00
signature.go lnwire: add length validation in NewSigFromRawSignature 2022-03-11 12:31:49 +08:00
typed_delivery_addr_test.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
typed_delivery_addr.go lnwire: add new ChannelType field as TLV record to Open/AcceptChannel 2021-08-30 19:17:21 -07:00
typed_lease_expiry_test.go lnwire: add LeaseExpiry custom record for Open+AcceptChannel 2021-10-19 18:30:17 -07:00
typed_lease_expiry.go lnwire: add LeaseExpiry custom record for Open+AcceptChannel 2021-10-19 18:30:17 -07:00
update_add_htlc.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
update_fail_htlc.go multi: typo fixes [skip ci] 2022-05-03 20:55:40 +00:00
update_fail_malformed_htlc.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
update_fee.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
update_fulfill_htlc.go lnwire: refactor Encode to use specific writers - III 2021-08-10 05:36:09 +08:00
warning.go lnwire: add warning message wrapping existing Error message structure 2022-05-16 13:51:29 -04:00
writer_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
writer.go lnwire: add new type OpaqueAddrs 2022-05-04 11:06:11 +02:00

lnwire

Build Status MIT licensed GoDoc

The lnwire package implements the Lightning Network wire protocol.

This package has intentionally been designed so it can be used as a standalone package for any projects needing to interface with lightning peers at the wire protocol level.

Installation and Updating

⛰  go get -u github.com/lightningnetwork/lnd/lnwire