Commit Graph

17099 Commits

Author SHA1 Message Date
Dusty Daemon
c29db2458e splice: Update splice_info tlv to use odd version
Update the tlv to use the type referenced in the spec, which also makes marks the tlv as optional.

Changelog-EXPERIMENTAL: --experimental-splicing: if you have splicing enabled on a channel both nodes must upgrade in unison due to updating commitment_signeds splice_info tlv's type.
2025-11-13 15:37:31 +10:30
Joseph Goulden
1ead6791fd chore: nix flake update
Switched to nixpkgs-unstable
Replaced postgresql dependency with much smaller libpq.
Utilise new inputs.self.submodules feature to simplify flake use
Moved apps to a separate file
Changelog-None
2025-11-13 15:35:51 +10:30
Rusty Russell
f58079e559 CI: Remove non-working FreeBSD test.
It takes over an hour to run, because there's no FreeBSD wheel for the cryptography Python
package, and it builds it, in Rust, from scratch.

And eventually, takes over 125 minutes and times out.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-13 15:33:02 +10:30
Dusty Daemon
a45189cc70 splice: Update to current spec
Updating splice related reestablish code to
https://github.com/lightning/bolts/pull/1289
and
https://github.com/lightning/bolts/pull/1160

Changelog-Changed: Breaking change -- if you have splicing enabled on a channel both nodes must upgrade in unison due to updating `channel_reestablish` for to new splice specifications
2025-11-13 15:17:19 +10:30
Rusty Russell
add398f5ea xpay: wait, if final node gives us an indication we're behind on blockheight.
This doesn't happen much in real life, but it's certainly possible, so do what pay does here.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Fixes: https://github.com/ElementsProject/lightning/issues/8612
Changelog-Added: `xpay` will now wait if it suspects a payment failure is due to a height disagreement with the final node.
2025-11-13 15:15:57 +10:30
Rusty Russell
4dca8cf7e5 pytest: test for xpay waiting when the destination complains about blockheight.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-13 15:15:57 +10:30
Lagrang3
4f1c8806d7 askrene: add askrene-bias-node rpc
Changelog-Added: askrene-bias-node: an RPC command to set a bias on node's outgoing or incoming channels.

Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
2025-11-13 15:15:27 +10:30
Lagrang3
5769beb1db askrene: add timestamp to biases
We add one more field to biases: "timestamp".
With the timestamp variable old biases can be removed with the
askrene-age command.

Changelog-Added: Plugins: askrene channel biases now have an associated timestamp, and are timed out by askrene-age

Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
2025-11-13 15:15:27 +10:30
ShahanaFarooqui
bd3b3ca93f docs: Update rpc commands sync script as per readme API v2
Changelog-None.
2025-11-13 15:07:00 +10:30
ShahanaFarooqui
061182876f docs: Upgrade rdme from v8 to v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
529cc7d4bc docs: Updated contribute-to-core-lightning docs for v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
367efcf643 docs: Updated developers-guide docs for v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
6bba927fef docs: Updated node-operators-guide docs for v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
5d907ca719 docs: Updated beginners-guide docs for v10 2025-11-13 15:07:00 +10:30
ShahanaFarooqui
4a6a667cc5 docs: Updated getting-started docs for v10 2025-11-13 15:07:00 +10:30
Rusty Russell
41e21d1d70 autoclean: don't increment num_cleaned when record wasn't even a candidate.
For example, `autoclean-once failedforwards` would count every non-failed forwards
as "uncleaned".

This is both technically correct and completely useless.

Changelog-Fixed: JSON-RPC: `autoclean-once` returns "uncleaned" number reflecting number of candidates which were too new to be cleaned, not all records we didn't delete.
Fixes: https://github.com/ElementsProject/lightning/issues/8632
Reported-by: @grubles and several other sharp-eyed users.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-13 13:58:13 +10:30
daywalker90
e9f3aaf8af docs: fix htlc states description regarding direction
Changelog-None
2025-11-13 12:21:44 +10:30
ShahanaFarooqui
5733046617 docker: Fix missing CLN version in docker image
Changelog-Fixed: Core lightning version in Docker image will not be missing.
2025-11-13 12:04:08 +10:30
ShahanaFarooqui
31035077fa ci: Fix Release action failure due to change in .asc suffix
Reference commit: ea2f7607b8

Changelog-None.
2025-11-13 12:02:34 +10:30
Peter Neuroth
9436d52b83 tests: use fundwallet instead of manually funding the lsp
Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ab06508b57 lsp_plugin: use concrete type to avoid unwrap
This commit adds a custom request type for the on_openchannel hook to
avoid calling unwrap() during runtime. We now return cleanly from the
hook in any case.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ec54d3486c lsp_plugin: add warning if extra_fee is wrong
The extra_fee tlv appended to the update_add_htlc message is set by the
LSP and should specify what was deducted from a single htlc. If it does
not match the expected amount, we log a warning message.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
0559ff1ab2 lsp_plugin: add hook helper to the client
We nearly always want to return `{"result":"continue"}` in case that
something went wrong. This commits adds two helper macros that help us
to cleanly return from a hook while logging necessary information.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
fcf1868d4e lsp_plugin: add cleanup on "on_invoice_payment"
The `on_invoice_payment` hook is called when core-lightning successfully
collected all parts to an invoice. We'll use this to clean up the the
datastore when an invoice completes.

Caveat: This will be called on every succesfull invoice payment, we may
improve this in the future.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
be015898ae lsp_plugin: add basic lsps2 mpp support to client
This includes a mocked lsps2 service plugin, tests and some changes on
the client side. The client now can accept mpp payments for a
jit-channel opening from a connected LSP.

Changelog-Added: Lsps2 `fixed-invoice-mpp` mode for the lsps2 client

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
3b05a81317 lsp_plugin: format test file
autoformat on save complained about the formatting.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
33cd11cb1a lsp_plugin: remove anchor-type from jit channel
We use non-anchor channels for now and make this configurable in the
future. The reason for this decission is that elements does not support
anchors.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
c40f6ee9d3 lsp_plugin: remove feature flag temporarily to ...
please `connect` tests. We need to fix this in the future. Connectd
should not tell peers about features of disabled plugins.
We need to ensure that connectd only starts once the plugins have
returned from init.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
a8d122ba27 lsp_plugin: change extra_fee value type to u64
Blip25 https://github.com/lightning/blips/blob/master/blip-0025.md uses
u64 for the `amount_msat` in the `extra_fee`

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
d398c7fd5d lsp_plugin: add u64 getter and setter to tlvs
We found a situation where we need to set and get u64s rather than tu64s

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
9cd041a6f6 lsp_plugin: remove reserve from hook response
This slipped in during development but actually, we don't want to mess
with the channel reservere here.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
fa8d90f347 lsp_plugin: relax LSP feateture bit handling
Replace ensure_lsp_connected() by check_peer_lsp_status() which only
returns the status of the peer (connected, has_lsp_feature). This allows
us to be more tolearant about the LSP feature bit since it is only
optional according to the spec.

We still check for the feature but only return a warning in the logs.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
722c19ae93 lsp_plugin: add reversed feature-bit check
Core-Lightning returns the feature-bits in reversed order but we don't
want to rely on the caller to reverse the u8 slice themselfs. This
commit adds a convenience function that reverses the bitmap to avoid
hard to debug mistakes.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
22269eb646 lsp_plugin: add documentation for options
Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
9e301f0f9c lsp_plugin: rename cmds and opts to fit convention
We use `experimental-*` for documented commands instead of `dev-` which
are undocumented commands.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ce0be9dc87 lsp_plugin: remove redundant config option
We don't need to separately enable lsp and lsps2 services. If lsps2 is
not enabled what can we do with just the messaging layer?

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Christian Decker
1126bc312b chore(fmt): Fix formatting of new python files. 2025-11-13 10:58:49 +10:30
Peter Neuroth
366ada7853 lsp_plugin: pass-through invoice params
Calling lsps_jitchannel we want to pass through the label and
description parameters used to call `invoice` to keep the api close to
Core-Lightning

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
e789b969ec lsp_plugin: add client side check for zero_conf
We only allow zero_conf channels if we approved the a jit-channel from
the LSP in advance.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ffc0e42f7d lsp_plugin: add lsps-jitchannel handler
Adds the full roundtrip to request a jit channel from the LSP. It
approves the jit scid returned by the LSP and returns the invoice with
the corresponding route-hint.

Changelog-Added Experimental support for LSPS2 no-MPP,
Lsps-trusts-client mode. See
https://github.com/lightning/blips/blob/master/blip-0052.md for further
details.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
7f3789b624 lsp_plugin: add htlc_accepted handler for no-mpp
Adds the service side (LSP) for a simple no-mpp trusted jit channel
opening. This is only an intermediate step, we are going to add support
for multiple htlcs.
This is experimental and can drain on-chain fees from the LSP if used in
public.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ecb1f4c7e7 lsp_plugin: add lsps2_buy request and handler
Adds the lsps2.buy request to the client and the lsps2.buy handler to
the LSP service.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
581eb3076f lsp_plugin: add lsps2_getinfo handler and call
This commit adds the lsps2_get_info call defined by BLIP052. It also
adds a test policy plugin that the LSP service plugin uses to fetch the
actual fee menu from to separate the concerns of providing a spec
compliant implementation of an LSP and making business decisions about
fee prices.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
17a9a928f5 lsp_plugin: add lsps2 models
Add models and options to enable lsps2 on the lsp

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
ef539dd52e lsp_plugin: refactor lsps0listprotocols handler
Move the handler to a separate file, and add lsps2_enabled flag to the
handler.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
bbcb51d98e lsp_plugin: check that featurebit is set and that
the client is connected to the lsp before sending a request

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
6c5c302c26 lsp_plugin: change listprotocols request
Using lsp_id instead of peer as identifier

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
e36fdeff81 lsp_plugin: add primitives for messages
Adds some primitives defined in lsps0 for other protocol messages.

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
3606106c4f lsp_plugin: add dev-eneabled flag for client
While this is still experimental, we only want to enable the client when
explicitly defined!

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30
Peter Neuroth
511e61d784 lsp_plugin: add sane error to listprotocols
Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2025-11-13 10:58:49 +10:30