Commit Graph

877 Commits

Author SHA1 Message Date
ThomasV
b339b1e7e3 ln_utxo_reserve
When we send max, decrease sent amount in order to keep some
reserve utxo, in order to be able to sweep lightning channels.
2025-04-03 14:39:05 +02:00
ThomasV
651e081b2f Merge pull request #9671 from accumulator/fix_lightning_can_receive_offline_peer
lnworker: take peer_state into account in get_channels_for_receiving
2025-04-02 14:33:45 +02:00
f321x
964ffbd2c4 don't use route hint channels if they are frozen 2025-04-02 13:48:46 +02:00
Sander van Grieken
08e2970889 lnworker: add parameter include_disconnected for get_channels_for_receiving(),
allowing less strict filtering when building route hints (i.e. likely usable soon-ish)
2025-04-02 11:35:47 +02:00
f321x
0b19b660c5 don't use fallback feerates in lightning by default 2025-04-01 14:12:02 +02:00
ThomasV
e9335f5cc7 fix typo 2025-03-20 10:54:29 +01:00
ThomasV
525e261520 lnworker: replace sometimes failing assert with print statement
this assert typically fails when a channel is force-closed and
the tx is unconfirmed
2025-03-20 10:09:04 +01:00
ThomasV
60338eba5d lnworker.handle_onchain_state early return if no network (follow-up fbebe7de1a) 2025-03-20 10:00:59 +01:00
SomberNight
d36e877eb8 lnworker: comment re hist: if paying MPP, amt and fee might be shifted
a bit confusing behaviour
2025-03-18 19:25:18 +00:00
ThomasV
26910ef81d Merge pull request #9620 from accumulator/lightning_pass_invoice_not_bolt11
refactor lnworker.pay_invoice to accept Invoice object instead of bolt11 string
2025-03-18 20:09:01 +01:00
ThomasV
8e6be0a36a Remove inheritance between LNWatcher and Watchtower
As LNWatcher is no longer async, there is not enough overlap
between these classes to deserve inheritance
2025-03-14 11:59:56 +01:00
ThomasV
fbebe7de1a Make lnwatcher not async
This fixes offline history not having the proper labels
2025-03-14 11:09:11 +01:00
f321x
af8d1fb401 handle jit invoices in qml
make min funding amount symbol, change Signal name, change Exception type

change minChannelFunding to QEAmount and make message text variable

qml: improve translatibility of strings

init minchannelfunding value in init method

rebase on master
2025-03-13 12:02:46 +01:00
ThomasV
798df671ea If we have proposed htlcs in a channel that was force-closed,
call lnworker.htlc_failed once the htlc_tx is deeply mined.

In the case of a forwarding, this will fail incoming htlcs.
(fixes #8547)
2025-03-12 20:11:11 +01:00
ThomasV
c42201ccac remove lnworker.enable_htlc_settle_onchain: not used
I think this has only been used for manual testing
2025-03-11 12:12:43 +01:00
Sander van Grieken
6fdb6c93f7 refactor lnworker.pay_invoice to accept Invoice object instead of bolt11 string
rename lnworker._check_invoice to lnworker._check_bolt11_invoice
2025-03-09 14:47:34 +01:00
ThomasV
8011ae00ab Merge pull request #9586 from f321x/jit-block-preimage
Add mechanism to block htlcs from settling back
2025-03-07 12:04:39 +01:00
f321x
109ad2b3da add mechanism to block htlcs from settling back 2025-03-07 12:03:59 +01:00
ThomasV
840243e029 separate fee policy from config
- Wallet.make_unsigned_transaction takes a FeePolicy parameter
 - fee sliders act on a FeePolicy instead of config
 - different fee policies may be used for different purposes
 - do not detect dust outputs in lnsweep, delegate that to lnwatcher
2025-03-05 10:29:26 +01:00
ThomasV
6234cbf97b Merge pull request #9603 from spesmilo/gossip_info
gossip: less log lines, use command line instead
2025-03-05 08:23:19 +01:00
ThomasV
1201b87ad7 Merge pull request #9587 from f321x/jit-invoice-creation
Disable mpp flags in invoice creation if jit channel is required and consider available liquidity
2025-03-04 16:07:54 +01:00
f321x
d62eb7ab13 disable mpp flags in invoice creation if jit channel is required, check against available liquidity if we need a jit channel 2025-03-04 15:24:03 +01:00
ThomasV
96d0dad41c gossip: less log lines, use command line instead 2025-03-04 14:33:54 +01:00
f321x
d348da811a introduce gossip query handling and forwarding 2025-03-04 13:10:37 +01:00
ThomasV
4917f7e3ce fix balance sanity check in get_lightning_history 2025-02-28 09:42:24 +01:00
ThomasV
d714ef130a Merge pull request #9039 from accumulator/onion_messages
onion messages
2025-02-20 18:12:40 +01:00
ThomasV
f9c427124d qml: fix follow-up 392c219913 2025-02-20 09:38:47 +01:00
Sander van Grieken
7b4180202a add onion message support 2025-02-19 14:29:02 +01:00
ThomasV
392c219913 simplify history-related commands:
- reduce number of methods
 - use nametuples instead of dicts
 - only two types: OnchainHistoryItem and LightningHistoryItem
 - channel open/closes are groups
 - move capital gains into separate RPC
2025-02-19 11:40:21 +01:00
Sander van Grieken
c740057bc7 lnworker: imports, whitespace 2025-02-17 14:41:32 +01:00
f321x
5eb9aa074e change to separate exception class for too low fees
store exception in variable instead of using a bool flag

add default str to routing exceptions

Add separate exception class to handle fee related payment errors
2025-01-28 16:15:03 +01:00
f321x
41e32145a8 Add maybe_fee_related bool to NoPathFound and set it on instanciation in according places 2025-01-28 15:58:03 +01:00
SomberNight
0779d9d7ae fallback ln nodes: simplify a bit
note: BitcoinRegtest subclasses BitcoinTestnet, so the FALLBACK_LN_NODES field should be overwritten

trivial follow-up of https://github.com/spesmilo/electrum/pull/9457
2025-01-27 13:19:29 +00:00
ThomasV
373d875f08 Merge pull request #9457 from f321x/move_constants
Move fallback ln nodes in separate json files
2025-01-22 14:58:56 +01:00
ThomasV
a084ccc74c lnworker: fix how lightning balance is affected when a channel is
force-closed. Assert final balance in lnworker.get_history().

If we offered some HTLCs, we do not know yet whether they will be
redeemed by us or by the remote.
2025-01-21 17:14:17 +01:00
f321x
eb600a3a14 move fallback ln nodes in separate json files and import them in constants 2025-01-20 11:13:23 +01:00
ThomasV
64e07732f8 Merge pull request #9430 from SomberNight/202501_funding_pubkey_deriv
lightning: change derivation of funding_pubkey
2025-01-17 10:49:16 +01:00
f321x
b1e1a39997 add fallback list of signet nodes 2025-01-15 16:40:30 +01:00
f321x
48c53053d6 don't inline logic and add comment 2025-01-15 10:44:01 +01:00
SomberNight
cba073dfd1 lightning: change derivation of funding_pubkey
Ideally, given an on-chain backup, after the remote force-closes, we should be able to spend our anchor output,
to CPFP the remote commitment tx (assuming the channel used OPTION_ANCHORS).
To spend the anchor output, we need to be able to sign with the local funding_privkey.

Previously we derived the funding_key from the channel_seed (which comes from os.urandom).
Prior to anchors, there was no use case for signing with the funding_key given a channel backup.
Now with anchors, we should make its derivation deterministic somehow, in a way so that it can
be derived given just an on-chain backup.
- one way would be to put some more data into the existing OP_RETURN
  - uses block space
  - the OP_RETURNs can be disabled via "use_recoverable_channels"
  - only the initiator can use OP_RETURNs (so what if channel is in incoming dir?)
- instead, new scheme for our funding_key:
  - we derive the funding_privkey from the lnworker root secret (derived from our bip32 seed)
  - for outgoing channels:
    - lnworker_root_secret + remote_node_id + funding_tx_nlocktime
  - for incoming channels:
    - lnworker_root_secret + remote_node_id + remote_funding_pubkey
  - a check is added to avoid reusing the same key between channels:
      not letting to user open more than one channel with the same peer in a single block
  - only the first 16 bytes of the remote_node_id are used, as the onchain backup OP_RETURNs only contain that
- as the funding_privkey cannot be derived from the channel_seed anymore, it is included in the
imported channel backups, which in turn need a new version defined
  - a wallet db upgrade is used to update already stored imported cbs
  - alternatively we could keep the imported cbs as-is, so no new version, no new funding_privkey field, as it is clearly somewhat redundant given on-chain backups can reconstruct it
    - however adding the field seems easier
      - otherwise the existing code would try to derive the funding_privkey from the channel_seed
      - also note: atm there is no field in the imported backups to distinguish anchor channels vs static-remotekey channels
2025-01-14 17:56:48 +00:00
f321x
4c93c9a26c limit payment attempts if client uses trampoline
revert line break

limit payment attempts if client uses trampoline
2025-01-14 11:18:21 +01:00
SomberNight
8f5b395ddc lnworker.open_channel: move max funding_sat check deeper in call stack
open_channel_with_peer was missing this check
2025-01-13 14:53:16 +00:00
ThomasV
33d0e6dbec Attach labels to outpoints instead of txids.
Move labels logic from lnworker to wallet.

Due to batching, a single transaction may have several labels attached to it.
2025-01-03 10:54:11 +01:00
ThomasV
29a8c41025 move watchtower to a plugin.
remove watchtower dialog in qt
2024-12-20 15:34:26 +01:00
ThomasV
ee42e09387 anchor channels: unlock wallet on startup if the wallet has channels 2024-12-20 10:10:07 +01:00
ThomasV
67470b92b7 lnchannel: fix extract_preimage for MPP.
- enforce MPP in the corresponding regtest.
 - fix get_invoice_status returning inflight if it was settled onchain
2024-12-15 10:46:18 +01:00
bitromortac
ea584e13fc anchors: switch to zero-fee-htlcs
* sets the weight of htlc transactions to zero, thereby putting a zero
  fee for the htlc transactions
* add inputs to htlc-tx for fee bumping
* switches feature flags
* disable anchor test vectors, which are now partially invalid
2024-11-25 10:56:50 +01:00
ThomasV
ece1fb39d2 enable anchor outputs via config option 2024-11-23 10:10:16 +01:00
bitromortac
b6e224c864 lnwatcher: add field for onchain htlc settlement control 2024-11-21 10:58:41 +01:00
bitromortac
22f5ff0d0e add static payment key
* in order to be able to sweep to_remote in an onchain backup scenario
  we need to retain the private key for the payment_basepoint
* to facilitate the above, we open a channel derived from a static
  secret (tied to the wallet seed), the static_payment_key combined with
the funding pubkey (multisig_key), which we can restore from the channel
closing transaction
2024-11-20 10:08:26 +01:00