Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lightningd/plugins
Community curated plugins for core-lightning
https://github.com/lightningd/plugins
c-lightning cln core-lightning lightning lightning-network lightningd plugin
Last synced: 3 months ago
JSON representation
Community curated plugins for core-lightning
- Host: GitHub
- URL: https://github.com/lightningd/plugins
- Owner: lightningd
- License: bsd-3-clause
- Created: 2019-01-17T12:16:43.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-30T03:31:56.000Z (4 months ago)
- Last Synced: 2024-10-30T06:23:56.549Z (4 months ago)
- Topics: c-lightning, cln, core-lightning, lightning, lightning-network, lightningd, plugin
- Language: Python
- Homepage:
- Size: 1.43 MB
- Stars: 269
- Watchers: 19
- Forks: 129
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Plugins for Core-Lightning
Community curated plugins for Core-Lightning.
[](https://github.com/lightningd/plugins/actions/workflows/main.yml)
[](https://github.com/lightningd/plugins/actions/workflows/nightly.yml)## Available plugins
| Name | Short description | CLN
`24.02`/`24.05`/`24.08`/`master` |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | :----: |
| [backup][backup] | A simple and reliable backup plugin |     |
| [bolt12-prism][bolt12-prism] | Split payments triggered manually or by paying a BOLT 12 |     |
| [btcli4j][btcli4j] | A Bitcoin Backend to enable safely the pruning mode, and support also rest APIs. |     |
| [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. |     |
| [clnrest-rs][clnrest-rs] | Drop-in rust implementation of CLN's clnrest.py |     |
| [clnrod][clnrod] | Channel acceptor plugin. Configurable with external data from amboss/1ml and notifications |     |
| [currencyrate][currencyrate] | A plugin to convert other currencies to BTC using web requests |     |
| [datastore][datastore] | The Datastore Plugin |     |
| [donations][donations] | A simple donations page to accept donations from the web |     |
| [event-websocket][c-lightning-events] | 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] |     |
| [hold][hold] | Hold invoices that do not require the preimage to be known when created |     |
| [holdinvoice][holdinvoice] | Holds htlcs for invoices until settle or cancel is called (aka Hodlinvoices) via RPC/GRPC |     |
| [invoice-queue][Lightning-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 |     |
| [ln-address-pay][ln-address-pay] | Allows payments to lightning addresses |     |
| [monitor][monitor] | helps you analyze the health of your peers and channels |     |
| [nloop][NLoop] | Generic Lightning Loop for boltz |     |
| [persistent-channels][pers-chans] | Maintains a number of channels to peers |     |
| [poncho][poncho] | Turns CLN into a [hosted channels][blip12] provider |     |
| [pruning][c-lightning-pruning-plugin] | This plugin manages pruning of bitcoind such that it can always sync |     |
| [rebalance][rebalance] | Keeps your channels balanced |     |
| [sauron][sauron] | A Bitcoin backend relying on [Esplora][esplora]'s API |     |
| [sitzprobe][sitzprobe] | A Lightning Network payment rehearsal utility |     |
| [sling][sling] | Rebalance your channels with smart rules and built-in background tasks |     |
| [summars][summars] | Print configurable summary of node, channels and optionally forwards, invoices, payments |     |
| [summary][summary] | Print a nice summary of the node status |     |
| [torq-plugin][torq-plugin] | Better CLN integration into [Torq](https://github.com/lncapital/torq) |     |
| [trustedcoin][trustedcoin] | Replace your Bitcoin Core with data from public block explorers |     |
| [watchtower-client][watchtower-client] | Watchtower client for The Eye of Satoshi |     |
| [webhook][webhook] | Dispatches webhooks based from [event notifications][event-notifications] |     |
| [zmq][zmq] | Publishes notifications via [ZeroMQ][zmq-home] to configured endpoints |     |## Plugin Managers
This is a list of plugin managers that can help you install these plugins:
| Name | Short description |
| ------------------------------------ | ------------------------------------------------------------------------------------------- |
| [coffee][coffee] | Reference implementation for a flexible core lightning plugin manager |
| [reckless][reckless] | Comes with CLN. Reckless currently supports python and javascript plugins. |## Archived plugins
If you can't find a plugin you're looking for, it may have been [archived](archived.md). Plugins are archived when they start to fail integration testing with the latest CLN release, at which point they will be considered unmaintained.
## Installation
To install and activate a plugin you need to stop your lightningd and restart it
with the `plugin` argument like this:```
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`
- You must have git core.fileMode set to true to reflect the permissions in git
- On Windows you might need to do the _git add_ command in WSL to be able to change the permissions
- A plugin can be written in any programming language, as it interacts with
`lightningd` purely using stdin/stdout pipes.### Automatic plugin initialization
Alternatively, especially when you use multiple plugins, you can copy or symlink
all plugin directories into your `~/.lightning/plugins` directory. The daemon
will load each executable it finds in sub-directories as a plugin. In this case
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
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:```bash
export PYTHONPATH=/path/to/lightnind/contrib/pyln-client:/path/to/lightnind/contrib/pyln-testing:$PYTHONPATH
```### Writing tests
The `pyln-testing` library provides a number of helpers and fixtures to write
tests. While not strictly necessary, writing a test will ensure that your
plugin is working correctly against a number of configurations (both with and
without `DEVELOPER`, `COMPAT` and `EXPERIMENTAL_FEATURES`), and more
importantly that they will continue to work with newly release versions of
Core-Lightning.Writing a test is as simple as this:
- The framework will look for unittest filenames starting with `test_`.
- The test functions should also start with `test_`.```python
from pyln.testing.fixtures import *pluginopt = {'plugin': os.path.join(os.path.dirname(__file__), "YOUR_PLUGIN.py")}
def test_your_plugin(node_factory, bitcoind):
l1 = node_factory.get_node(options=pluginopt)
s = l1.rpc.getinfo()
assert(s['network'] == 'regtest') # or whatever you want to test
```Tests are run against pull requests, all commits on `master`, as well as once
ever 24 hours to test against the latest `master` branch of the Core-Lightning
development tree.Running tests locally can be done like this:
(make sure the `PYTHONPATH` env variable is correct)```bash
pytest YOUR_PLUGIN/YOUR_TEST.py
```### Python plugins specifics
#### Additional dependencies
Additionally, some Python plugins come with a `requirements.txt` which can be
used to install the plugin's dependencies using the `pip` tools:```bash
pip3 install -r requirements.txt
```Note: You might need to also specify the `--user` command line flag depending on
your environment.### Contributing
#### Minimum supported Python version
The minimum supported version of Python for this repository is currently `3.8.x` (14 Oct 2019).
Python plugins users must ensure to have a version `>= 3.8`.
Python plugins developers must ensure their plugin to work with all Python versions `>= 3.8`.#### Recommended commits format
Whenever submitting code contributions for this repository, we should try to stick to the format 'lightning' uses, something like:
```
plugin name: One subject line
(empty line)
more detailed description (if any)
```## 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)## 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[backup]: https://github.com/lightningd/plugins/tree/master/backup
[blip12]: https://github.com/lightning/blips/blob/42cec1d0f66eb68c840443abb609a5a9acb34f8e/blip-0012.md
[bolt12-prism]: https://github.com/gudnuf/bolt12-prism
[btcli4j]: https://github.com/clightning4j/btcli4j
[c-api]: https://github.com/ElementsProject/lightning/blob/master/plugins/libplugin.h
[c-lightning-events]: https://github.com/rbndg/c-lightning-events
[c-lightning-pruning-plugin]: https://github.com/Start9Labs/c-lightning-pruning-plugin
[clearnet]: https://github.com/lightningd/plugins/tree/master/clearnet
[cln-ntfy]: https://github.com/yukibtc/cln-ntfy
[clnrest-rs]: https://github.com/daywalker90/clnrest-rs
[clnrod]: https://github.com/daywalker90/clnrod
[coffee]: https://github.com/coffee-tools/coffee
[cpp-api]: https://github.com/darosior/lightningcpp
[csharp-example]: https://github.com/joemphilips/DotNetLightning/tree/master/examples/HelloWorldPlugin
[currencyrate]: https://github.com/lightningd/plugins/tree/master/currencyrate
[datastore]: https://github.com/lightningd/plugins/tree/master/datastore
[donations]: https://github.com/lightningd/plugins/tree/master/donations
[esplora]: https://github.com/Blockstream/esplora
[event-notifications]: https://lightning.readthedocs.io/PLUGINS.html#event-notifications
[feeadjuster]: https://github.com/lightningd/plugins/tree/master/feeadjuster
[go-api]: https://github.com/niftynei/glightning
[graphql]: https://github.com/nettijoe96/c-lightning-graphql
[graphql-spec]: https://graphql.org/
[hold]: https://github.com/BoltzExchange/hold
[holdinvoice]: https://github.com/daywalker90/holdinvoice
[java-api]: https://github.com/clightning4j/JRPClightning
[js-api]: https://github.com/lightningd/clightningjs
[kotlin-example]: https://vincenzopalazzo.medium.com/a-day-in-a-c-lightning-plugin-with-koltin-c8bbd4fa0406
[Lightning-Invoice-Queue]: https://github.com/rbndg/Lightning-Invoice-Queue
[lightning-qt]: https://github.com/darosior/pylightning-qt
[ln-address-pay]: https://github.com/nosedam/ln-address-pay
[monitor]: https://github.com/renepickhardt/plugins/tree/master/monitor
[NLoop]: https://github.com/bitbankinc/NLoop
[pers-chans]: https://github.com/lightningd/plugins/tree/master/persistent-channels
[plugin-docs]: https://docs.corelightning.org/docs/plugin-development
[poncho]: https://github.com/fiatjaf/poncho
[python-api]: https://github.com/ElementsProject/lightning/tree/master/contrib/pylightning
[python-api-pypi]: https://pypi.org/project/pylightning/
[rebalance]: https://github.com/lightningd/plugins/tree/master/rebalance
[reckless]: https://docs.corelightning.org/reference/reckless
[reporter]: https://github.com/LNOpenMetrics/go-lnmetrics.reporter
[sauron]: https://github.com/lightningd/plugins/tree/master/sauron
[sitzprobe]: https://github.com/niftynei/sitzprobe
[sling]: https://github.com/daywalker90/sling
[summars]: https://github.com/daywalker90/summars
[summary]: https://github.com/lightningd/plugins/tree/master/summary
[torq-plugin]: https://github.com/lncapital/torq-cln-plugin
[trustedcoin]: https://github.com/fiatjaf/trustedcoin
[ts-api]: https://github.com/runcitadel/c-lightning.ts
[watchtower-client]: https://github.com/talaia-labs/rust-teos/tree/master/watchtower-plugin
[webhook]: https://github.com/fiatjaf/lightningd-webhook
[zmq]: https://github.com/lightningd/plugins/tree/master/zmq
[zmq-home]: https://zeromq.org/