Rusty Russell
8738d78c86
plugins/pay: use gossmods_from_listpeerchannels instead of private gossip_store records.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-12-14 09:16:56 +10:30
Rusty Russell
a5c0563612
plugins/fetchinvoice: use gossmods_from_listpeerchannels instead of private gossip_store records.
...
[ Includes use-after-free fix from Alex Myers <alex@endothermic.dev> ]
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-12-14 09:16:56 +10:30
Alex Myers
8e897746e2
gossipd: pass remote private channel update to ld
...
and stash in the database.
Rusty: I added the bad gossip message so we would see unknown updates in CI, and made sure we don't send our own generated updates to lightningd.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-12-14 09:16:56 +10:30
niftynei
411bb2884a
fallback: json add fallback cleanup
...
Expand to handle P2TR addresses, use the common script encoding utility
function instead of reimplementing it.
2023-10-26 19:11:17 +10:30
Rusty Russell
b8ca193606
renepay: an experimental payment plugin
...
Signed-off-by: Lagrang3 <eduardo.quintana@pm.me>
Changelog-Added: Plugins: `renepay`: an experimental pay plugin implementing Pickhardt payments (`renepay` and `renepaystatus`).
2023-07-31 12:58:56 +09:30
Rusty Russell
b2c1ef73cb
build: avoid printing PLUGIN_BASES on every build.
...
Debugging left over in 94205c094f
.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-07-28 09:44:58 +09:30
Shahana Farooqui
94205c094f
plugins/clnrest: Update clnrest dependencies in scripts and Dockerfiles
...
Adding python3-json5 python3-flask python3-gunicorn flask_restx pyln-client
Also run `pip3 install -r plugins/clnrest/requirements.txt`
2023-07-25 19:20:16 +09:30
Shahana Farooqui
abcfda133f
plugin: On-boarding default python plugins
...
plugin: On-boarding default python plugins
2023-07-25 19:20:16 +09:30
Rusty Russell
4deb552fe9
build: don't generate experimental variants of wire files.
...
We no longer have any experimental-only wire definitions.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-05-23 09:34:08 +09:30
Christian Decker
db3707f957
pytest: Highlight the re-entrancy issue for cln-plugin events
...
This was pointed out by Daywalker [1]: we are synchronously processing
events from `lightningd` which means that if processing one of the
hooks or requests was slow or delayed, we would not get notifications,
hooks, or RPC requests, massively impacting the flexbility.
This highlights the issue with a failing test (it times out), and in
the next commit we will isolate event processing into their own task,
so to free the event loop from having to wait for an eventual
response.
[1] https://community.corelightning.org/c/developers/hold-invoice-plugin#comment_wrapper_16754493
2023-04-13 18:13:28 -07:00
Rusty Russell
2c9b043be9
Makefile: remove plugins/sql-schema_gen.h and plugins on make clean
...
Reported-by: @chrisguida
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-04-11 22:04:18 -07:00
Rusty Russell
2de5b84370
plugins/Makefile: don't use echo -n.
...
MacOS in particular doesn't like this!
Reported-by: @chrisguida
Fixes : #6171
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-04-11 22:04:18 -07:00
Rusty Russell
b8519a6a1a
plugins/sql: add listclosedchannels
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Added: JSON-RPC: `sql` now includes `listclosedchannels`.
2023-03-25 15:28:02 +10:30
Rusty Russell
bcab3f7e83
Makefile: don't try to build sql plugin if there's no sqlite3 support.
...
Reported-by: @whitslack
Fixes : #5940
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-02-06 09:20:28 +01:00
Rusty Russell
d8320f015f
plugins/sql: add bkpr-listaccountevents and bkpr-listincome support.
...
This *would* be a 1-line change (add it to Makefile) except that we
previously assumed a "list" prefix on commands.
These use the default refreshing, but they could be done better using
the time-range parameters.
Suggested-by: @niftynei
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-01-30 15:15:41 -06:00
Rusty Russell
9b08c4f25a
plugins/sql: refresh listnodes and listchannels by monitoring the gossip_store.
...
It's quite a lot of code, but these are the most expensive commands we
do so it's worth it.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-01-30 15:15:41 -06:00
Rusty Russell
8a0ee5f56e
plugins/sql: add listpeerchannels support.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-01-30 15:15:41 -06:00
Rusty Russell
c230291141
plugins/sql: rework to parse schemas.
...
This requires us to rename "index" fields, rename fields if we have a
sub-object, and create sub-tables if we have an array, and handle the
fact that some listX commands don't contain array X (listsendpays
contains "payments").
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-01-30 15:15:41 -06:00
Rusty Russell
24d86a85c3
plugins/sql: initial commit of new plugin.
...
This is designed to allow you to perform complex server-side
queries.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-01-30 15:15:41 -06:00
Christian Decker
71b581da4d
make: Clean up duplicate cargo examples build rules
2023-01-16 13:53:48 +10:30
Rusty Russell
37bc4603b8
lightningd: re-add 'offerout' functionality, as 'invoicerequest'.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 15:08:03 +01:00
Rusty Russell
846a520bc2
offers: remove 'send-invoice' offers support.
...
This has radically changed in the spec, so remove it now, and we'll
reintroduce / rewrite it.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 15:08:03 +01:00
Rusty Russell
c2c9f45dac
offers: create a real blinded path, if necessary.
...
It's just to a direct peer, and we only create one, but this is
enough to test, and make payments to non-public nodes work.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 15:08:03 +01:00
Rusty Russell
01a47720c3
plugins/libplugin-pay: hack in blinded path support.
...
We simply take the first one, and route to the start of that. Then we
append the blinded path to the onion construction.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 15:08:03 +01:00
Rusty Russell
3c75770586
common/json_filter: routines for json filtering.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 20:25:58 +10:30
Rusty Russell
662c6931f3
Remove point32.
...
The x-only dream is dead. Remove all trace.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-10-26 11:29:06 +10:30
Rusty Russell
eac8401f84
Makefile: separate bolt12 wireobjects
...
Most things don't want them, so don't link it into everything by default.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-10-26 11:29:06 +10:30
Rusty Russell
82d98e4b96
gossmap: move gossmap_guess_node_id to pay plugin.
...
This removes a point32 dependency.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-10-26 11:29:06 +10:30
Rusty Russell
5d25934865
plugins/Makefile: regenerate plugins list when config changes.
...
In particular, if rust is enabled/disabled.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-09-16 12:31:45 +09:30
Rusty Russell
305a238810
plugins/Makefile: put bitcoin/chainparams.o in PLUGIN_COMMON_OBJS since everyone needs it.
...
This was originally done as part of the bookkeeper introduction, but it deserves its
own patch (and that one didn't remove the bitcoin/chainparams.o from the individual
requirements lines).
Suggested-by: @niftynei
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-07-28 12:08:18 +09:30
niftynei
351dc17e46
bkpr: add bookkeeper to PLUGINS list
...
This makes it start up automatically
2022-07-28 12:08:18 +09:30
niftynei
fb951dbbd6
bkpr: first attempt at database code for accounting
...
A database scheme and first attempt at drivers for the bookkeeper
database.
Also moves bookkeeper plugin into its own subdirectory
2022-07-28 12:08:18 +09:30
niftynei
1a3bfc479f
bookkeep: first commit, stub of new plugin
...
Will manage bookkeeping for cln
2022-07-28 12:08:18 +09:30
Rusty Russell
3fe246c2e7
plugins/commando: basic commando plugin (no runes yet).
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au
Changelog-Added: Plugins: `commando` a new builtin plugin to send/recv peer commands over the lightning network, using runes.
2022-07-17 08:51:02 +09:30
Rusty Russell
3e672b784d
Makefile: use a library archive for CCAN
...
The linker discards whole files in an archive if it doesn't need them,
so saves a bit of space (and time). Also allows us to add more niche
things to CCAN (e.g. runes support!) without bloating all the binaries.
We also had many places which depended on $(CCAN_FILES), but that was
already a dependent of $(ALL_PROGRAMS) and $(ALL_TEST_PROGRAMS).
Before:
```
$ size lightningd/lightning*d
text data bss dec hex filename
2247683 8696 39008 2295387 23065b lightningd/lightning_channeld
2086607 7432 38880 2132919 208bb7 lightningd/lightning_closingd
2227916 8056 39200 2275172 22b764 lightningd/lightning_connectd
3369236 119288 39240 3527764 35d454 lightningd/lightningd
2183551 8352 38880 2230783 2209ff lightningd/lightning_dualopend
2196389 8024 39136 2243549 223bdd lightningd/lightning_gossipd
2086216 7488 39264 2132968 208be8 lightningd/lightning_hsmd
2134396 8136 39424 2181956 214b44 lightningd/lightning_onchaind
2133391 8352 38880 2180623 21460f lightningd/lightning_openingd
1512168 2136 34384 1548688 17a190 lightningd/lightning_websocketd
```
After:
```
text data bss dec hex filename
2192065 8488 38912 2239465 222be9 lightningd/lightning_channeld
2030957 7224 38816 2076997 1fb145 lightningd/lightning_closingd
2179571 7968 39104 2226643 21f9d3 lightningd/lightning_connectd
3354296 119288 39208 3512792 3599d8 lightningd/lightningd
2127933 8144 38816 2174893 212fad lightningd/lightning_dualopend
2141699 7856 39072 2188627 216553 lightningd/lightning_gossipd
2024482 7288 5240 2037010 1f1512 lightningd/lightning_hsmd
2072074 7920 5400 2085394 1fd212 lightningd/lightning_onchaind
2077773 8144 38816 2124733 206bbd lightningd/lightning_openingd
1408958 1752 344 1411054 1587ee lightningd/lightning_websocketd
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-07-17 08:51:02 +09:30
Rusty Russell
401f1debc5
common: clean up json routine locations.
...
We have them split over common/param.c, common/json.c,
common/json_helpers.c, common/json_tok.c and common/json_stream.c.
Change that to:
* common/json_parse (all the json_to_xxx routines)
* common/json_parse_simple (simplest the json parsing routines, for cli too)
* common/json_stream (all the json_add_xxx routines)
* common/json_param (all the param and param_xxx routines)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-07-15 12:24:00 -05:00
adi2011
1450f1758c
Plugin: Add new plugin for SCB, Updated makefile and gitignore as well
2022-07-14 12:24:48 -05:00
Rusty Russell
355025239d
Make sure DEFAULT_TARGETS includes rust testing examples.
...
Otherwise tests fail:
```
def test_plugin_start(node_factory):
"""Start a minimal plugin and ensure it is well-behaved
"""
bin_path = Path.cwd() / "target" / "debug" / "examples" / "cln-plugin-startup"
> l1 = node_factory.get_node(options={"plugin": str(bin_path), 'test-option': 31337})
...
error starting plugin '/home/runner/work/lightning/lightning/target/debug/examples/cln-plugin-startup': opening pipe: No such file or directory
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-04-13 05:25:00 +09:30
Rusty Russell
c598d4df74
Makefile: make sure ALL_PROGRAMS doesn't include cln-grpc plugin.
...
$(ALL_PROGRAMS) are assumed to be C programs for now.
Add $(C_PLUGINS) as a new variable.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-04-13 05:25:00 +09:30
Rusty Russell
e4ed15dc33
plugins: fix cln-grpc to work as a builtin when we're run in-tree.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-04-13 05:25:00 +09:30
Rusty Russell
436706384c
plugins: add grpc-plugin to PLUGINS, so it gets started and installed.
...
Fixes : #5162
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-04-13 05:25:00 +09:30
Christian Decker
bf7ad86ef2
cln-grpc: Rename the grpc plugin and binary
...
Suggested-by: Rusty Russell <@rustyrussell>
Changelog-Added: plugins: `cln-grpc` first class GRPC interface for remotely controlling nodes over mTLS authentication
2022-03-30 12:15:55 +10:30
Christian Decker
b4c7ba2d8f
cln-grpc-plugin: Add scaffolding for the cln-grpc-plugin
2022-03-30 12:15:55 +10:30
Christian Decker
9ae1f33992
cln-plugin: Get started with the plugin interface
2022-03-10 10:21:41 +10:30
niftynei
7add7ca199
json: reverse parse a coin_mvt tag back into an enum
2022-03-05 15:12:12 +10:30
Rusty Russell
166ee4bac8
plugins/Makefile: improve header dependencies.
...
Not all plugins depended on their headers. Keep it simple: all
plugins depend on all plugin headers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-12-01 05:44:28 +10:30
Rusty Russell
24536c5561
common/autodata: use instead of ccan/autodata
...
This means it needs to be linked ~everywhere.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-09-21 18:04:43 +02:00
Rusty Russell
cb22015b2a
common/channel_type: wrapper for generated 'struct channel_type'.
...
We make it a first-class citizen internally, even though we won't use
it over the wire (at least, non-experimental builds). This scheme
follows the latest draft, in which features are flagged compulsory.
We also add several helper functions.
Since uses the *even* bits (as per latest spec), not the *odd* bits,
we have some other fixups.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-09-13 15:53:23 +02:00
niftynei
8819278a88
lease rates: helpers for parsing, serializing + equating lease_rates
...
We're gonna need them
2021-07-20 13:28:38 -04:00
niftynei
9387e4645b
funder-liqudity-ads: support options + setliquidity ad
...
Implement support for liquidity ads in `funder` plugin. We set the
command line options for the leases, as well as sending the updated ads
to lightningd (who then passes them through to gossipd)
2021-07-20 13:28:38 -04:00