Challenges May 2020

From fulmo
Jump to navigation Jump to search

Projects with Challenges

This is the list of Lightning Network related projects that registered for this HackSprint so far (list grow soon):

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

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

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

TOR2IP-Tunnelservice

A service to give a Lightning node running behind TOR a port on a public IP address.

Subpage with Challenge: TOR2IP-Tunnelservice

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

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

SendMany App

Project Info: https://github.com/fusion44/sendmany

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

LightningATM

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

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

Bitcoin Bounty Hunt (Online FPS)

Challenges coming up.

Chatroom to get started: https://mm.fulmo.org/fulmo/channels/bitcoin-bounty-hunt-online-fps

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

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.

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

During the hackathon we will try to:

  • compose core architecture with non-blocking multithreading
  • add lightning network wire protocol
  • implement BOLT-9 (using rust-lightning it should be simple)
  • implement BOLT-1: do connection to other LN nodes + send/receive `connect`, `ping` & `ping` messages
  • (optionally) implement gossip protocol

Contact User:Dr-Orlovsky 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.

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.