diff --git a/README.md b/README.md index 835ebaea5..7053e0752 100644 --- a/README.md +++ b/README.md @@ -6,48 +6,48 @@ Community curated plugins for Core-Lightning. ## Available plugins -| Name | Short description | -| ------------------------------------ | ------------------------------------------------------------------------------------------- | -| [autopilot][autopilot] | An autopilot that suggests channels that should be established | -| [backup][backup] | A simple and reliable backup plugin | -| [boltz-channel-creation][boltz] | A Core-Lightning plugin for Boltz Channel Creation Swaps | -| [btcli4j][btcli4j] | A Bitcoin Backend to enable safely the pruning mode, and support also rest APIs. | -| [circular][circular] | A smart rebalancing plugin for Core Lightning routing nodes | -| [csvexportpays][csvexportpays] | A plugin that exports all payments to a CSV file | -| [currencyrate][currencyrate] | A plugin to convert other currencies to BTC using web requests | -| [clearnet][clearnet] | A plugin that can be used to enforce clearnet connections when possible | -| [cln-ntfy][cln-ntfy] | Core Lightning plugin for sending `ntfy` alerts. | -| [donations][donations] | A simple donations page to accept donations from the web | -| [drain][drain] | Draining, filling and balancing channels with automatic chunks. | -| [event-websocket][event-websocket] | Exposes notifications over a Websocket | -| [feeadjuster][feeadjuster] | Dynamic fees to keep your channels more balanced | -| [go-lnmetrics.reporter][reporter] | Collect and report of the lightning node metrics | -| [graphql][graphql] | Exposes the Core-Lightning API over [graphql][graphql-spec] | -| [invoice-queue][invoice-queue] | Listen to lightning invoices from multiple nodes and send to a redis queue for processing | -| [lightning-qt][lightning-qt] | A bitcoin-qt-like GUI for lightningd | -| [listmempoolfunds][listmempoolfunds] | Track unconfirmed wallet deposits | -| [monitor][monitor] | helps you analyze the health of your peers and channels | -| [noise][noise] | Chat with your fellow node operators | -| [nostrify][nostrify] | Send CLN events to Nostr | -| [paythrough][paythrough] | Pay an invoice through a specific channel, regardless of better routes | -| [persistent-channels][pers-chans] | Maintains a number of channels to peers | -| [poncho][poncho] | Turns CLN into a [hosted channels][blip12] provider | -| [probe][probe] | Regularly probes the network for stability | -| [prometheus][prometheus] | Lightning node exporter for the prometheus timeseries server | -| [pruning][pruning] | This plugin manages pruning of bitcoind such that it can always sync | -| [python-teos][python-teos] | The Eye of Satoshi - Lightning Watchtower | -| [rebalance][rebalance] | Keeps your channels balanced | -| [reckless][reckless] | An **experimental** plugin manager (search/install plugins) | -| [requestinvoice][request-invoice] | Http server to request invoices | -| [sauron][sauron] | A Bitcoin backend relying on [Esplora][esplora]'s API | -| [sitzprobe][sitzprobe] | A Lightning Network payment rehearsal utility | -| [sparko][sparko] | RPC over HTTP with fine-grained permissions, SSE and spark-wallet support | -| [summary][summary] | Print a nice summary of the node status | -| [trustedcoin][trustedcoin] | Replace your Bitcoin Core with data from public block explorers | -| [webhook][webhook] | Dispatches webhooks based from [event notifications][event-notifications] | -| [watchtower][watchtower-client] | Watchtower client for The Eye of Satoshi | -| [zmq][zmq] | Publishes notifications via [ZeroMQ][zmq-home] to configured endpoints | -| [nloop][nloop] | Generic Lightning Loop for boltz | +| Name | Short description | +| ------------------------------------ | ----------------------------------------------------------------------------------------- | +| [autopilot][autopilot] | An autopilot that suggests channels that should be established | +| [backup][backup] | A simple and reliable backup plugin | +| [boltz-channel-creation][boltz] | A Core-Lightning plugin for Boltz Channel Creation Swaps | +| [btcli4j][btcli4j] | A Bitcoin Backend to enable safely the pruning mode, and support also rest APIs. | +| [circular][circular] | A smart rebalancing plugin for Core Lightning routing nodes | +| [csvexportpays][csvexportpays] | A plugin that exports all payments to a CSV file | +| [currencyrate][currencyrate] | A plugin to convert other currencies to BTC using web requests | +| [clearnet][clearnet] | A plugin that can be used to enforce clearnet connections when possible | +| [cln-ntfy][cln-ntfy] | Core Lightning plugin for sending `ntfy` alerts. | +| [donations][donations] | A simple donations page to accept donations from the web | +| [drain][drain] | Draining, filling and balancing channels with automatic chunks. | +| [event-websocket][event-websocket] | Exposes notifications over a Websocket | +| [feeadjuster][feeadjuster] | Dynamic fees to keep your channels more balanced | +| [go-lnmetrics.reporter][reporter] | Collect and report of the lightning node metrics | +| [graphql][graphql] | Exposes the Core-Lightning API over [graphql][graphql-spec] | +| [invoice-queue][invoice-queue] | Listen to lightning invoices from multiple nodes and send to a redis queue for processing | +| [lightning-qt][lightning-qt] | A bitcoin-qt-like GUI for lightningd | +| [listmempoolfunds][listmempoolfunds] | Track unconfirmed wallet deposits | +| [monitor][monitor] | helps you analyze the health of your peers and channels | +| [noise][noise] | Chat with your fellow node operators | +| [nostrify][nostrify] | Send CLN events to Nostr | +| [paythrough][paythrough] | Pay an invoice through a specific channel, regardless of better routes | +| [persistent-channels][pers-chans] | Maintains a number of channels to peers | +| [poncho][poncho] | Turns CLN into a [hosted channels][blip12] provider | +| [probe][probe] | Regularly probes the network for stability | +| [prometheus][prometheus] | Lightning node exporter for the prometheus timeseries server | +| [pruning][pruning] | This plugin manages pruning of bitcoind such that it can always sync | +| [python-teos][python-teos] | The Eye of Satoshi - Lightning Watchtower | +| [rebalance][rebalance] | Keeps your channels balanced | +| [reckless][reckless] | An **experimental** plugin manager (search/install plugins) | +| [requestinvoice][request-invoice] | Http server to request invoices | +| [sauron][sauron] | A Bitcoin backend relying on [Esplora][esplora]'s API | +| [sitzprobe][sitzprobe] | A Lightning Network payment rehearsal utility | +| [sparko][sparko] | RPC over HTTP with fine-grained permissions, SSE and spark-wallet support | +| [summary][summary] | Print a nice summary of the node status | +| [trustedcoin][trustedcoin] | Replace your Bitcoin Core with data from public block explorers | +| [webhook][webhook] | Dispatches webhooks based from [event notifications][event-notifications] | +| [watchtower][watchtower-client] | Watchtower client for The Eye of Satoshi | +| [zmq][zmq] | Publishes notifications via [ZeroMQ][zmq-home] to configured endpoints | +| [nloop][nloop] | Generic Lightning Loop for boltz | ## Installation @@ -59,10 +59,11 @@ lightningd --plugin=/path/to/plugin/directory/plugin_file_name.py ``` Notes: - - The `plugin_file_name.py` must have executable permissions: - `chmod a+x plugin_file_name.py` - - A plugin can be written in any programming language, as it interacts with - `lightningd` purely using stdin/stdout pipes. + +- The `plugin_file_name.py` must have executable permissions: + `chmod a+x plugin_file_name.py` +- A plugin can be written in any programming language, as it interacts with + `lightningd` purely using stdin/stdout pipes. ### Automatic plugin initialization @@ -74,19 +75,22 @@ you don't need to manage all the `--plugin=...` parameters. ### Dynamic plugin initialization Most of the plugins can be managed using the RPC interface. Use + ``` lightning-cli plugin start /path/to/plugin/directory/plugin_file_name ``` + to start it, and + ``` lightning-cli plugin stop /path/to/plugin/directory/plugin_file_name ``` + to stop it. As a plugin developer this option is configurable with all the available plugin libraries, and defaults to `true`. - ### PYTHONPATH and `pyln` To simplify plugin development you can rely on `pyln-client` for the plugin @@ -94,9 +98,9 @@ implementation, `pyln-proto` if you need to parse or write lightning protocol messages, and `pyln-testing` in order to write tests. These libraries can be retrieved in a number of different ways: - - Using `pip` tools: `pip3 install pyln-client pyln-testing` - - Using the `PYTHONPATH` environment variable to include your clightning's - shipped `pyln-*` libraries: +- Using `pip` tools: `pip3 install pyln-client pyln-testing` +- Using the `PYTHONPATH` environment variable to include your clightning's + shipped `pyln-*` libraries: ```bash export PYTHONPATH=/path/to/lightnind/contrib/pyln-client:/path/to/lightnind/contrib/pyln-testing:$PYTHONPATH @@ -158,26 +162,25 @@ The minimum supported version of Python for this repository is currently `3.6.x` Python plugins users must ensure to have a version `>= 3.6`. Python plugins developers must ensure their plugin to work with all Python versions `>= 3.6`. - ## More Plugins from the Community - - [@conscott's plugins](https://github.com/conscott/c-lightning-plugins) - - [@renepickhardt's plugins](https://github.com/renepickhardt/c-lightning-plugin-collection) - - [@rsbondi's plugins](https://github.com/rsbondi/clightning-go-plugin) - - [Core-Lightning plugins emulating commands of LND (lncli)](https://github.com/kristapsk/c-lightning-lnd-plugins) +- [@conscott's plugins](https://github.com/conscott/c-lightning-plugins) +- [@renepickhardt's plugins](https://github.com/renepickhardt/c-lightning-plugin-collection) +- [@rsbondi's plugins](https://github.com/rsbondi/clightning-go-plugin) +- [Core-Lightning plugins emulating commands of LND (lncli)](https://github.com/kristapsk/c-lightning-lnd-plugins) ## Plugin Builder Resources - - [Description of the plugin API][plugin-docs] - - [C Plugin API][c-api] by @rustyrussell - - [Python Plugin API & RPC Client][python-api] ([PyPI][python-api-pypi]) by @cdecker and [a video tutorial](https://www.youtube.com/watch?v=FYs1I-pCJIg) by @renepickhardt - - [Go Plugin API & RPC Client][go-api] by @niftynei - - [C++ Plugin API & RPC Client][cpp-api] by @darosior - - [Javascript Plugin API & RPC Client][js-api] by @darosior - - [TypeScript Plugin API & RPC Client][ts-api] by @AaronDewes - - [Java Plugin API & RPC Client][java-api] by @vincenzopalazzo - - [C# Plugin Guideline and example project][csharp-example] by @joemphilips - - [Kotlin plugin guideline and example][kotlin-example] by @vincenzopalazzo +- [Description of the plugin API][plugin-docs] +- [C Plugin API][c-api] by @rustyrussell +- [Python Plugin API & RPC Client][python-api] ([PyPI][python-api-pypi]) by @cdecker and [a video tutorial](https://www.youtube.com/watch?v=FYs1I-pCJIg) by @renepickhardt +- [Go Plugin API & RPC Client][go-api] by @niftynei +- [C++ Plugin API & RPC Client][cpp-api] by @darosior +- [Javascript Plugin API & RPC Client][js-api] by @darosior +- [TypeScript Plugin API & RPC Client][ts-api] by @AaronDewes +- [Java Plugin API & RPC Client][java-api] by @vincenzopalazzo +- [C# Plugin Guideline and example project][csharp-example] by @joemphilips +- [Kotlin plugin guideline and example][kotlin-example] by @vincenzopalazzo ## Archived plugins @@ -185,9 +188,9 @@ The following is a list of archived plugins that no longer maintained. If you like a plugin from that list, feel free to update and fix it, so we can un-archive it. -| Name | Short description | -| ------------------------------------ | ------------------------------------------------------------------------------------------- | -| [commando][commando] | Authorize peers to run commands on your node, and running commands on them. | +| Name | Short description | +| -------------------- | --------------------------------------------------------------------------- | +| [commando][commando] | Authorize peers to run commands on your node, and running commands on them. | [esplora]: https://github.com/Blockstream/esplora [pers-chans]: https://github.com/lightningd/plugins/tree/master/persistent-channels @@ -197,7 +200,7 @@ un-archive it. [summary]: https://github.com/lightningd/plugins/tree/master/summary [donations]: https://github.com/lightningd/plugins/tree/master/donations [drain]: https://github.com/lightningd/plugins/tree/master/drain -[plugin-docs]: https://lightning.readthedocs.io/PLUGINS.html +[plugin-docs]: https://docs.corelightning.org/docs/plugin-development [c-api]: https://github.com/ElementsProject/lightning/blob/master/plugins/libplugin.h [currencyrate]: https://github.com/lightningd/plugins/tree/master/currencyrate [python-api]: https://github.com/ElementsProject/lightning/tree/master/contrib/pylightning @@ -215,7 +218,7 @@ un-archive it. [js-api]: https://github.com/lightningd/clightningjs [ts-api]: https://github.com/runcitadel/c-lightning.ts [monitor]: https://github.com/renepickhardt/plugins/tree/master/monitor -[nostrify]: https://github.com/joelklabo/nostrify +[nostrify]: https://github.com/joelklabo/nostrify [reckless]: https://github.com/darosior/reckless [request-invoice]: https://github.com/lightningd/plugins/tree/master/request-invoice [sauron]: https://github.com/lightningd/plugins/tree/master/sauron