Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

c-lightning Project Template (Updated for Bitcoin 24 and Default CI)

Getting started with a new project can be a daunting task, especially on a complex project like a Lightning node. This template tries to get you going as fast as possible, by providing a couple of utilities and a preconfigured environment. The environment consists of a fully fledged python project including tests, so you can start on your implementation without having to learn all the obscure incantations first.

Who is this template for?

Everybody! While primarily created to get a number of academic projects going, it provides an easy to extend base that can be built upon:

  • Researchers trying to investigate the Lightning Network can create controlled network setups that highlight the aspects that they are looking into.
  • Plugin developers that want to extend c-lightning have a template of a plugin that can be incrementally changed to add new cool features.
  • Application developer that need a working test network they can use to test their applications against.

Getting Started

Out of the box this template provides a number of pieces that should get you started right away:

  • A sample plugin in src/plugin.py that shows you how easy it is to write a plugin to extend the existing functionality in c-lightning
  • Some tests that show how a network can be bootstrapped, and each node can be configured, with or without plugins.
  • A docker image that contains the required dependencies, so you can test and develop in isolation.
  • A Makefile that provides shortcuts to run tests and build artifacts.

You can get started with this template by checking it out, and start hacking:

$ git clone https://github.com/lightningd/template.git my-awesome-project
$ cd my-awesome-project

Alternatively you can also download a snapshot and start with that:

$ wget https://github.com/lightningd/template/archive/master.zip -O my-awesome-project.zip
$ unzip my-awesome-project.zip
$ cd my-awesome-project

The template comes with some canned tests to illustrate how you can create a network, perform some actions on it, test some things, and then tear down the network again after the test ran. These tests can be run either directly, or with the provided docker image, if you don't want to install the dependencies. The following builds the docker image:

make docker-image

And the following runs the tests in a docker container:

make docker-test

Where to go next?

Once you have familiarized yourself with how your tests can be run it's time to dig deeper. The following resources should help you on your journey:

  • The c-lightning Plugin API docs describe the communication between c-lightning and your plugin.
  • The pyln-client docs describe the JSON-RPC API client (LightningRpc) and the Plugin API used to talk to c-lightning over the JSON-RPC or to implement a plugin. 🚧 These docs are still under construction 🚧

About

A minimal template for projects that build on top of c-lightning. This should get you started 😎

Resources

Stars

12 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages