Coder Social home page Coder Social logo

alex-codelab / plugins Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lightningd/plugins

0.0 1.0 0.0 919 KB

Community curated plugins for c-lightning

License: BSD 3-Clause "New" or "Revised" License

Python 99.18% HTML 0.52% Makefile 0.06% Dockerfile 0.23%

plugins's Introduction

Plugins for Core-Lightning

Community curated plugins for Core-Lightning.

Integration Tests

Available plugins

Name Short description
autopilot An autopilot that suggests channels that should be established
backup A simple and reliable backup plugin
boltz-channel-creation A Core-Lightning plugin for Boltz Channel Creation Swaps
btcli4j A Bitcoin Backend to enable safely the pruning mode, and support also rest APIs.
circular A smart rebalancing plugin for Core Lightning routing nodes
csvexportpays A plugin that exports all payments to a CSV file
currencyrate A plugin to convert other currencies to BTC using web requests
donations A simple donations page to accept donations from the web
drain Draining, filling and balancing channels with automatic chunks.
event-websocket Exposes notifications over a Websocket
feeadjuster Dynamic fees to keep your channels more balanced
go-lnmetrics.reporter Collect and report of the lightning node metrics
graphql Exposes the Core-Lightning API over graphql
invoice-queue Listen to lightning invoices from multiple nodes and send to a redis queue for processing
lightning-qt A bitcoin-qt-like GUI for lightningd
listmempoolfunds Track unconfirmed wallet deposits
monitor helps you analyze the health of your peers and channels
noise Chat with your fellow node operators
nostrify Send CLN events to Nostr
paythrough Pay an invoice through a specific channel, regardless of better routes
persistent-channels Maintains a number of channels to peers
poncho Turns CLN into a hosted channels provider
probe Regularly probes the network for stability
prometheus Lightning node exporter for the prometheus timeseries server
pruning This plugin manages pruning of bitcoind such that it can always sync
python-teos The Eye of Satoshi - Lightning Watchtower
rebalance Keeps your channels balanced
reckless An experimental plugin manager (search/install plugins)
requestinvoice Http server to request invoices
sauron A Bitcoin backend relying on Esplora's API
sitzprobe A Lightning Network payment rehearsal utility
sparko RPC over HTTP with fine-grained permissions, SSE and spark-wallet support
summary Print a nice summary of the node status
trustedcoin Replace your Bitcoin Core with data from public block explorers
webhook Dispatches webhooks based from event notifications
watchtower Watchtower client for The Eye of Satoshi
zmq Publishes notifications via ZeroMQ to configured endpoints
nloop Generic Lightning Loop for boltz

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
  • 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:
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_.
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)

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:

pip3 install -r requirements.txt

Note: You might need to also specify the --user command line flag depending on your environment.

Minimum supported Python version

The minimum supported version of Python for this repository is currently 3.6.x (23 Dec 2016). 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

Plugin Builder Resources

Archived plugins

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 Authorize peers to run commands on your node, and running commands on them.

plugins's People

Contributors

m-schmoock avatar cdecker avatar darosior avatar rustyrussell avatar laanwj avatar vincenzopalazzo avatar joelklabo avatar guutboy avatar dependabot[bot] avatar manreo avatar svewa avatar nettijoe96 avatar fiatjaf avatar alex-codelab avatar joemphilips avatar jsarenik avatar openoms avatar elsirion avatar simonvrouwe avatar sr-gi avatar sgeisler avatar pesttoast avatar moller40 avatar michaeljohnclancy avatar ksedgwic avatar proofofkeags avatar giovannizotta avatar gijswijs avatar andrewtoth avatar lvnilesh avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.