Difference between pages "Challenges May 2020" and "Challenges June 2020"

From fulmo
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
==How to participate==
 
  
If you like to get a better overview of the challenges, join the [https://youtu.be/XvPkyVIPIfY kickoff livestream]. You may also join later on.  
+
==Projects with Challenges==
 +
 
 +
This is the list of Lightning Network related projects that registered for this HackSprint (please contact @rootzoll on twitter to add your project):
 +
 
 +
===RaspiBlitz===
 +
 
 +
Github issues with label "hackathon": https://github.com/rootzoll/raspiblitz/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon
 +
 
 +
Video helping you to get started with RaspiBlitz development: https://youtu.be/qTHDkFppsz0
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/raspiblitz
 +
 
 +
===Contribute to the book Mastering the Lightning Network===
 +
Andreas, Roasbeef and Rene have blocked time on the weekend to work on mastering the Lightning Network! So you can go to https://github.com/lnbook/lnbook and check their current progress.  
 +
Quite some fundamental chapters of the book are written and the authors will be happy if you read them and give feedback. This could include:
 +
* Feedback that something was too complicated, easy, boring, repetitive, poorly written or just awesome and should not change (:
 +
* You can look at our current structure and pick up chapters or sections and just write some text
 +
* Check the examples and pictures. Do we need better / more graphics and examples?
 +
* Are we missing topics?
 +
* Does the structure and read threat of the book make sense to you?
 +
* even just improving the language to make it more simple, improve the grammer and spelling would be very welcome.
 +
* Try running the Docker images and examples and give us feedback about that.
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/mastering-the-lightning-network
  
Most projects listed their challenges as sprint issues on Github with the lable "hackathon". Simply comment on those that you are interested in and the project mentors should get back to you.
+
===IP2TOR-Tunnelservice===
  
To participate please register on our [https://mm.fulmo.org Mattermost] (OpenSource Slack) and check if there is already a chat room regarding the project you are interested. In the channel "[https://mm.fulmo.org/fulmo/channels/lightning-hacksprint Lightning HackSprint]" should always be someone around to point you into the right direction if you have any further questions.
+
frennkie build for the last hacksprint https://github.com/frennkie/django-ip2tor and its now integrated into the RaspiBlitz v1.6RC1 to test out.
 +
So this challange is for people that have a RaspiBlitz to play with and like to test the IP2Tor-Tunnel service and help with feedback.
  
==Projects with Challenges==
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-tor2ip-tunnelservice
  
This is the list of Lightning Network related projects that registered for the HackSprint so far:
+
===Quickening - Room77 Point of Sale===
  
===RaspiBlitz===
+
Github issues starting with "Room77" https://github.com/arcbtc/M5StackSats/issues
  
Github issues with label "hackathon": [https://github.com/rootzoll/raspiblitz/issues?q=is%3Aopen+is%3Aissue+label%3Ahackathon github.com/rootzoll/raspiblitz]
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-pos-room77-quickening
  
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/raspiblitz
+
===Bowser HWW===
  
===LightningATM===
+
The bitcoins are in the other castle!
  
Github issues with label "hackathon": [https://github.com/21isenough/LightningATM/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon github.com/21isenough/LightningATM]
+
https://github.com/arcbtc/bowser-bitcoin-hardware-wallet
  
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightningatm
+
If you have an M5Stack, why not try making the Bowser DIY Hardware Wallet.
  
 
===LNbits===
 
===LNbits===
Line 29: Line 52:
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lnbits
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lnbits
  
===RTL (Ride The Lightning)===
+
In a push to get lnbits new update out and extend its functionality, x3 0.03btc bounties are available for anyone developing extensions. If you're interested in making an extension, pop into the stream for a chat. If the community likes the idea, you can make it and on completion get one of the bounties!
 +
 
 +
see video: https://www.youtube.com/watch?v=xnHz6NbTgZg
 +
 
 +
===Wiki Lightning Spam Protection===
 +
 
 +
Turn this prototype https://github.com/thorie7912/LightningPayment to add a Lightning SpamProtection into a [https://en.wikipedia.org/wiki/MediaWiki_extension Media Wiki Extension] thats easy to install and config on a standard Media Wiki.
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/media-wiki-spam-protection
 +
 
 +
===Interface for standard banking software via FinTS===
 +
 
 +
Merchants accepting Bitcoin (over Lightning) need an easy way to integrate transactions into their existing bookkeeping software. Like you can connect your bank account to your bookkeeping software by the FinTS it would be great of you can connect your Lightning Node (running on a RaspiBlitz) to that software and manage your Bitcoin Holdings as a "Foreign Currency Account".
 +
 
 +
The GitHub-Issue with details: https://github.com/rootzoll/raspiblitz/issues/1186
 +
 
 +
There is a 0.03 BTC bounty to create a small server software (running on a lightning node) that implements a subset of the FinTS standard to connect and manage your Lightning transactions with a FinTS supporting bookkeeping software.
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-fints-server
 +
 
 +
===LightningATM===
 +
 
 +
A DIY-Lightning Coin ATM - coins in, sats out
 +
 
 +
Github issues with label "hackathon": [https://github.com/21isenough/LightningATM/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon github.com/21isenough/LightningATM] (Python)
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightningatm
 +
 
 +
===Zeus App===
  
https://github.com/Ride-The-Lightning/RTL
+
Github issues with label "hackathon":[https://github.com/ZeusLN/zeus/issues?q=is%3Aissue+is%3Aopen+label%3A%22hackathon%22 github.com/ZeusLN/zeus] (Typescript / React-Native)
  
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rtl-ride-the-lightning
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-zeus
  
===Quickening - Room77 Point of Sale===
+
===Weenode===
  
Github issues starting with "Room77" https://github.com/arcbtc/M5StackSats/issues
+
This is the new name for the [https://blog.bitcoinprivacy.net/2019/12/20/news-from-the-cheapnode-project/ cheapnode project]: Building the cheapest possible bitcoin fullnode (+lightning and other services) on old Android phones.
  
Please work on the branch"payment_connector" use the version in the folder [https://github.com/arcbtc/M5StackSats/tree/payment_connector/TheQuickening "TheQuickening"]
+
Help wanted on [https://github.com/bitcoinprivacy/weenode/labels/hacksprint Github issues with label "hacksprint"]
  
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-pos-room77-quickening
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-weenode
  
===Lightnite===
+
=== Frontend for rubygems Donations ===
  
https://issues.lightnite.io
+
see https://twitter.com/Bumi/status/1270720199730163713?s=20
  
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightnite-game
+
GitHub: https://github.com/bumi/bundler-thankyou
  
===Specter-Desktop===
+
DemoVideo of Backend: https://asciinema.org/a/9MfCfcKLaKu4mp4lT9w4XHr2d?autoplay=1
  
https://github.com/rootzoll/raspiblitz/issues/1059#issuecomment-605526623
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rubygems-donations
  
===TOR2IP-Tunnelservice===
+
==Need more ideas?==
  
[[TOR2IP-Tunnelservice]]
+
Looking for yet another idea to build a small LApp? Check out [[Ideas for LApps]]!
  
===SendMany App===
+
==Adding your Project==
  
https://github.com/fusion44/sendmany
+
Feel free to add a challenge yourself! Ask Jeff or Rootzoll on the [https://mm.fulmo.org Mattermost] for the password to edit the Wiki-Page. If you have a GitHub Repo best practice is to put the label "hackathon" (yellow) next to issues you like people to join/help for the weekend. If you added a challenge please also get in touch on [https://mm.fulmo.org/fulmo/channels/lightning-hacksprint Mattermost] for more information and collaboration.
https://github.com/rootzoll/raspiblitz/issues/1000#issuecomment-605526180
 
  
===Wiki Lightning Spam Protection===
+
==Projects from last Hacksprint (maybe joining again)==
  
Turn this prototype https://github.com/thorie7912/LightningPayment to add a Lightning SpamProtection into a [https://en.wikipedia.org/wiki/MediaWiki_extension Media Wiki Extension] thats easy to install and config on a standard Media Wiki.
+
===SendMany App===
  
===The Eye of Satoshi (python-teos)===
+
Challenges: https://github.com/fusion44/sendmany/issues?q=is%3Aissue+is%3Aopen+label%3Ahacksprint
  
Github issues with label "hackathon": [https://github.com/talaia-labs/python-teos/labels/hackathon github.com/talaia-labs/python-teos]
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-keysendsendmany
  
===Exchange Union/OpenDEX===
+
===Zapread.com===
  
Integrate c-lightning as swap client (and more): https://github.com/ExchangeUnion/xud/issues?q=is%3Aopen+is%3Aissue+label%3Ahackathon
+
Develop a C# LNURL-AUTH library which can integrate with .NET (MVC) websites.
  
===getroutevia: a c-lightning plugin for route search with restrictions===
+
List of Challenges: https://github.com/Horndev/zapread.com/issues?q=is%3Aopen+is%3Aissue+label%3Ahackathon
  
Find routes that satisfy additional criteria, for instance, must [not] go through certain nodes. More info and discussion here: https://github.com/s-tikhomirov/getroutevia/issues/1
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-zapread
  
 
===Rust Lightning network node===
 
===Rust Lightning network node===
Line 87: Line 137:
 
* protocols on top of LN (layer 3), like [https://hackmd.io/@lpQxZaCeTG6OJZI3awxQPQ/LN-DLC DLCs on LN] or proposed [https://github.com/LNP-BP/lnpbps/issues/24 Lightspeed payments], which require modification on the structure of the commitment transaction.
 
* protocols on top of LN (layer 3), like [https://hackmd.io/@lpQxZaCeTG6OJZI3awxQPQ/LN-DLC DLCs on LN] or proposed [https://github.com/LNP-BP/lnpbps/issues/24 Lightspeed payments], which require modification on the structure of the commitment transaction.
  
We will try to build a node that is highly modular and is ready for the future LN extensions. More information here: https://github.com/LNP-BP/lnpd
+
Last time we started building new rust LN node based on LNP/BP library — and this time we will continue the challenge! We will work on further node development; for more details you can refer our project backlog and todo issues here: https://github.com/LNP-BP/lnp-node/projects/1
  
During the hackathon we will try to:
+
In brief, we will
* compose core architecture with non-blocking multithreading
+
* update to use the latest version of rust-lightning, that had migrated on new rust-bitcoin type system
* add lightning network wire protocol
+
* update the code to use the lates version of rust-lnpbp library
* implement BOLT-9 (using rust-lightning it should be simple)
+
* improve multi-thread architecture, in particular message bus with ZMQ
* implement BOLT-1: do connection to other LN nodes + send/receive `connect`, `ping` & `ping` messages
+
* complete BOLT-1 implementation
 
* (optionally) implement gossip protocol
 
* (optionally) implement gossip protocol
  
Contact [[User:Dr-Orlovsky]] for details
+
Contact [[User:Dr-Orlovsky]] and check https://github.com/LNP-BP/lnp-node/projects/1 for details
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rust-ln-node
 +
 
 +
===RTL (Ride The Lightning)===
 +
 
 +
https://github.com/Ride-The-Lightning/RTL
 +
 
 +
Github issues with label 'hackathon': https://github.com/Ride-The-Lightning/RTL/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon
 +
 
 +
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rtl-ride-the-lightning
 +
 
 +
=== c-lightning ===
 +
 
 +
[[User:Cdecker]] is available on Mattermost for mentoring of c-lightning projects. Feel free to propose your own ideas, and we'll help you design and implement them :-)
 +
 
 +
Some ideas for projects / challenges:
 +
 
 +
* Hardware wallet integration: c-lightning has supported external funding via the `fundchannel_start` and `fundchannel_complete` RPC methods for quite some time, in addition the `close_to` parameter allows you to specify where funds should be sent once the channel closes. These can be combined to have all on-chain funds sourced from a hardware wallet and, after they were borrowed to operate a channel, they can be returned to the hardware wallet. The idea here is to write a plugin that interacts with the hardware wallet to fund channels, so funds are only temporarily controlled by c-lightning.
  
===Weenode===
+
* `hsm_secret` generation from a seed-phrase: c-lightning will securely generate a random seed when first starting a new node. Given the lack of functional backup, and the seed not being sufficient to restore all the state, c-lightning has so not included any seed-phrase to restore the seed. However due to recent improvements both in backups and replicated DB backends, it would be great to also safely store the `hsm_secret` using existing tooling, such as paper backups, encrypted BIP39 seed-phrases, or even steel backups. Goal of this challenge is the creation of a launcher or plugin that takes a seed-phrase and generates the associated `hsm_secret` file.
  
This is the new name for the [https://blog.bitcoinprivacy.net/2019/12/20/news-from-the-cheapnode-project/ cheapnode project].
+
* Trampoline Proof-of-concept: Trampoline routing is a recent proposal to outsource some aspects of route-finding to another node in the neighborhood of the sending node. This is useful for nodes that may be unable to sync the network topology through gossip, or do not have time to sync before they need to send out a payment, e.g., mobile nodes. Using c-lightning's ability to implement custom protocol extensions (`custommsg`) and the ability to create routing onions with arbitrary payloads, you can implement a fast gossiping extension with which nodes announce their ability to route on behalf of others, and the sender to encapsulate the instructions for a trampoline node (where to go and how much to send).
Help wanted on [https://github.com/bitcoinprivacy/weenode/labels/hacksprint Github issues with label "hacksprint"]
 
  
===Backup plugin for c-lightning===
+
* Networked RPC interface: c-lightning is purposefully not exposing its JSON-RPC over the network, in order not to mandate a specific method of interaction. Plugins can take care of exposing the API in a variety of ways (grpc, JSON-RPC, REST, ...) and they can also be used to enforce arbitrary access policies using the `rpc_command` hook. These two aspects can be handled independently, i.e., one plugin exposes the API over some transport while another plugin enforces the authentication and authorization required to access the API. This in turn allows to mix and match arbitrary networked API endpoints and authentication mechanisms. Goal of this challenge is to come up with a generic way to have one plugin expose the API, and pass along any authentication information that was submitted with the request, so another plugin can enforce access policies.
  
Backups are a major issue in the Lightning Protocol, given that any sort of
+
* Backup plugin: https://github.com/lightningd/plugins/tree/master/backup Currently it supports only backup to the local file. There are several rooms for improvement, contact [[User:mrostecki]] if interested.
dataloss could potentially result in loss of funds. This means that restoring
+
** "partial file" backend - saving each database change/transaction to a separate file, which will be helpful for ideas below
an old backup of the database could result in the node broadcasting an old
+
** PGP backend - based on the "partial file" plugin, which encrypts each file
state, which is a cheat attempt in the protocol, which is punished.
+
** Dropbox, Google Drive backends - uploading backups to Dropbox and Google Drive, based on "partial file" backend (to not upload a huge file every time), with optional usage of PGP
  
The backup c-lightning plugin (https://github.com/lightningd/plugins/pull/97)
+
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/c-lightning, https://mm.fulmo.org/fulmo/channels/x-backup-plugin-c-lightning
implements the basic mechanisms to create a synchronous backup of
 
any change to the database, and ensures that the backup stays in sync with the
 
database. It does so in a generic way allowing to write backups to a variety
 
of backends, but initially only implements a file-system based backup backend
 
that is located on the same machine, but on a separate disk. Doing so already
 
provides protection against data corruption on the primary disk. Potential
 
future improvements could include:
 
  
* Backup to Google services. Examples include:
+
=== Executing a DLC (discreet log contract) on Rust Lightning ===
** GDrive
 
** Google Docs - Sheets
 
** Google Cloud Storage
 
* Backup to Dropbox
 
* Send backup data to a peer using the custommsg hook
 
* Backups to a dedicated backup server
 
  
In the case of a dedicated backup server the plugin could also manage a
+
A discreet log contract is a protocol that allows for the use of oracles in bitcoin. They have been designed such that they can be lifted off of the bitcoin protocol into the Lightning Network.  
subscription that is used to pay for the backup service.
 
  
[[User:cdecker]] is available for additional information and mentorship. See his [[User:cdecker|Wiki page]] for contact information.
+
The current discreet log contract spec is available here: https://github.com/discreetlogcontracts/dlcspecs
  
==Adding your Project==
+
Here is the github issue describing the work we are trying to accomplish this weekend to execute a DLC on the Lightning Network (using Rust Lightning):
  
Feel free to add a challenge yourself! The wiki is open to any Bolter (you'll figure out how to edit). If you have a GitHub Repo best practice is to put the label "hackathon" (yellow) next to issues you like people to join/help for the weekend. If you added a challenge please also get in touch on [https://mm.fulmo.org/fulmo/channels/lightning-hacksprint Mattermost] for more information and collaboration.
+
Please join us in this chatroom: https://mm.fulmo.org/fulmo/channels/rust-ln-dlc

Revision as of 15:03, 11 June 2020

Projects with Challenges

This is the list of Lightning Network related projects that registered for this HackSprint (please contact @rootzoll on twitter to add your project):

RaspiBlitz

Github issues with label "hackathon": https://github.com/rootzoll/raspiblitz/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon

Video helping you to get started with RaspiBlitz development: https://youtu.be/qTHDkFppsz0

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/raspiblitz

Contribute to the book Mastering the Lightning Network

Andreas, Roasbeef and Rene have blocked time on the weekend to work on mastering the Lightning Network! So you can go to https://github.com/lnbook/lnbook and check their current progress. Quite some fundamental chapters of the book are written and the authors will be happy if you read them and give feedback. This could include:

  • Feedback that something was too complicated, easy, boring, repetitive, poorly written or just awesome and should not change (:
  • You can look at our current structure and pick up chapters or sections and just write some text
  • Check the examples and pictures. Do we need better / more graphics and examples?
  • Are we missing topics?
  • Does the structure and read threat of the book make sense to you?
  • even just improving the language to make it more simple, improve the grammer and spelling would be very welcome.
  • Try running the Docker images and examples and give us feedback about that.

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/mastering-the-lightning-network

IP2TOR-Tunnelservice

frennkie build for the last hacksprint https://github.com/frennkie/django-ip2tor and its now integrated into the RaspiBlitz v1.6RC1 to test out. So this challange is for people that have a RaspiBlitz to play with and like to test the IP2Tor-Tunnel service and help with feedback.

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-tor2ip-tunnelservice

Quickening - Room77 Point of Sale

Github issues starting with "Room77" https://github.com/arcbtc/M5StackSats/issues

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-pos-room77-quickening

Bowser HWW

The bitcoins are in the other castle!

https://github.com/arcbtc/bowser-bitcoin-hardware-wallet

If you have an M5Stack, why not try making the Bowser DIY Hardware Wallet.

LNbits

https://github.com/arcbtc/lnbits

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lnbits

In a push to get lnbits new update out and extend its functionality, x3 0.03btc bounties are available for anyone developing extensions. If you're interested in making an extension, pop into the stream for a chat. If the community likes the idea, you can make it and on completion get one of the bounties!

see video: https://www.youtube.com/watch?v=xnHz6NbTgZg

Wiki Lightning Spam Protection

Turn this prototype https://github.com/thorie7912/LightningPayment to add a Lightning SpamProtection into a Media Wiki Extension thats easy to install and config on a standard Media Wiki.

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/media-wiki-spam-protection

Interface for standard banking software via FinTS

Merchants accepting Bitcoin (over Lightning) need an easy way to integrate transactions into their existing bookkeeping software. Like you can connect your bank account to your bookkeeping software by the FinTS it would be great of you can connect your Lightning Node (running on a RaspiBlitz) to that software and manage your Bitcoin Holdings as a "Foreign Currency Account".

The GitHub-Issue with details: https://github.com/rootzoll/raspiblitz/issues/1186

There is a 0.03 BTC bounty to create a small server software (running on a lightning node) that implements a subset of the FinTS standard to connect and manage your Lightning transactions with a FinTS supporting bookkeeping software.

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-fints-server

LightningATM

A DIY-Lightning Coin ATM - coins in, sats out

Github issues with label "hackathon": github.com/21isenough/LightningATM (Python)

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightningatm

Zeus App

Github issues with label "hackathon":github.com/ZeusLN/zeus (Typescript / React-Native)

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-zeus

Weenode

This is the new name for the cheapnode project: Building the cheapest possible bitcoin fullnode (+lightning and other services) on old Android phones.

Help wanted on Github issues with label "hacksprint"

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-weenode

Frontend for rubygems Donations

see https://twitter.com/Bumi/status/1270720199730163713?s=20

GitHub: https://github.com/bumi/bundler-thankyou

DemoVideo of Backend: https://asciinema.org/a/9MfCfcKLaKu4mp4lT9w4XHr2d?autoplay=1

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rubygems-donations

Need more ideas?

Looking for yet another idea to build a small LApp? Check out Ideas for LApps!

Adding your Project

Feel free to add a challenge yourself! Ask Jeff or Rootzoll on the Mattermost for the password to edit the Wiki-Page. If you have a GitHub Repo best practice is to put the label "hackathon" (yellow) next to issues you like people to join/help for the weekend. If you added a challenge please also get in touch on Mattermost for more information and collaboration.

Projects from last Hacksprint (maybe joining again)

SendMany App

Challenges: https://github.com/fusion44/sendmany/issues?q=is%3Aissue+is%3Aopen+label%3Ahacksprint

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-keysendsendmany

Zapread.com

Develop a C# LNURL-AUTH library which can integrate with .NET (MVC) websites.

List of Challenges: https://github.com/Horndev/zapread.com/issues?q=is%3Aopen+is%3Aissue+label%3Ahackathon

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-zapread

Rust Lightning network node

Another LN node? Why we need it?

The problem with the existing Lightning node implementations is their very limited extensibility for such things as:

  • future LN upgrades (channel factories, pay-to-ec-point, taproot),
  • protocols on top of LN (layer 3), like DLCs on LN or proposed Lightspeed payments, which require modification on the structure of the commitment transaction.

Last time we started building new rust LN node based on LNP/BP library — and this time we will continue the challenge! We will work on further node development; for more details you can refer our project backlog and todo issues here: https://github.com/LNP-BP/lnp-node/projects/1

In brief, we will

  • update to use the latest version of rust-lightning, that had migrated on new rust-bitcoin type system
  • update the code to use the lates version of rust-lnpbp library
  • improve multi-thread architecture, in particular message bus with ZMQ
  • complete BOLT-1 implementation
  • (optionally) implement gossip protocol

Contact User:Dr-Orlovsky and check https://github.com/LNP-BP/lnp-node/projects/1 for details

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rust-ln-node

RTL (Ride The Lightning)

https://github.com/Ride-The-Lightning/RTL

Github issues with label 'hackathon': https://github.com/Ride-The-Lightning/RTL/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-rtl-ride-the-lightning

c-lightning

User:Cdecker is available on Mattermost for mentoring of c-lightning projects. Feel free to propose your own ideas, and we'll help you design and implement them :-)

Some ideas for projects / challenges:

  • Hardware wallet integration: c-lightning has supported external funding via the `fundchannel_start` and `fundchannel_complete` RPC methods for quite some time, in addition the `close_to` parameter allows you to specify where funds should be sent once the channel closes. These can be combined to have all on-chain funds sourced from a hardware wallet and, after they were borrowed to operate a channel, they can be returned to the hardware wallet. The idea here is to write a plugin that interacts with the hardware wallet to fund channels, so funds are only temporarily controlled by c-lightning.
  • `hsm_secret` generation from a seed-phrase: c-lightning will securely generate a random seed when first starting a new node. Given the lack of functional backup, and the seed not being sufficient to restore all the state, c-lightning has so not included any seed-phrase to restore the seed. However due to recent improvements both in backups and replicated DB backends, it would be great to also safely store the `hsm_secret` using existing tooling, such as paper backups, encrypted BIP39 seed-phrases, or even steel backups. Goal of this challenge is the creation of a launcher or plugin that takes a seed-phrase and generates the associated `hsm_secret` file.
  • Trampoline Proof-of-concept: Trampoline routing is a recent proposal to outsource some aspects of route-finding to another node in the neighborhood of the sending node. This is useful for nodes that may be unable to sync the network topology through gossip, or do not have time to sync before they need to send out a payment, e.g., mobile nodes. Using c-lightning's ability to implement custom protocol extensions (`custommsg`) and the ability to create routing onions with arbitrary payloads, you can implement a fast gossiping extension with which nodes announce their ability to route on behalf of others, and the sender to encapsulate the instructions for a trampoline node (where to go and how much to send).
  • Networked RPC interface: c-lightning is purposefully not exposing its JSON-RPC over the network, in order not to mandate a specific method of interaction. Plugins can take care of exposing the API in a variety of ways (grpc, JSON-RPC, REST, ...) and they can also be used to enforce arbitrary access policies using the `rpc_command` hook. These two aspects can be handled independently, i.e., one plugin exposes the API over some transport while another plugin enforces the authentication and authorization required to access the API. This in turn allows to mix and match arbitrary networked API endpoints and authentication mechanisms. Goal of this challenge is to come up with a generic way to have one plugin expose the API, and pass along any authentication information that was submitted with the request, so another plugin can enforce access policies.
  • Backup plugin: https://github.com/lightningd/plugins/tree/master/backup Currently it supports only backup to the local file. There are several rooms for improvement, contact User:mrostecki if interested.
    • "partial file" backend - saving each database change/transaction to a separate file, which will be helpful for ideas below
    • PGP backend - based on the "partial file" plugin, which encrypts each file
    • Dropbox, Google Drive backends - uploading backups to Dropbox and Google Drive, based on "partial file" backend (to not upload a huge file every time), with optional usage of PGP

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/c-lightning, https://mm.fulmo.org/fulmo/channels/x-backup-plugin-c-lightning

Executing a DLC (discreet log contract) on Rust Lightning

A discreet log contract is a protocol that allows for the use of oracles in bitcoin. They have been designed such that they can be lifted off of the bitcoin protocol into the Lightning Network.

The current discreet log contract spec is available here: https://github.com/discreetlogcontracts/dlcspecs

Here is the github issue describing the work we are trying to accomplish this weekend to execute a DLC on the Lightning Network (using Rust Lightning):

Please join us in this chatroom: https://mm.fulmo.org/fulmo/channels/rust-ln-dlc