Difference between revisions of "Challenges May 2020"

From fulmo
Jump to navigation Jump to search
Line 2: Line 2:
 
==Projects with Challenges==
 
==Projects with Challenges==
  
This is the list of Lightning Network related projects that registered for the HackSprint so far:
+
This is the list of Lightning Network related projects that registered for this HackSprint so far (list grow soon):
  
 
===RaspiBlitz===
 
===RaspiBlitz===
Line 11: Line 11:
  
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/raspiblitz
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/raspiblitz
 
'''Outcome:'''
 
* Repaired some peoples RaspiBlitzes
 
* Plans on reviving BlitzD in the future
 
* Testing new ways of detecting public IP of RaspiBlitz
 
* Helped other RaspiBlitz related projects
 
 
===LightningATM===
 
 
Github issues with label "hackathon": [https://github.com/21isenough/LightningATM/issues?q=is%3Aissue+is%3Aopen+label%3Ahackathon github.com/21isenough/LightningATM]
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightningatm
 
 
'''Outcome:'''
 
* Dependency "pycoingecko" removed (thanks @mrostecki!)
 
* Researched Kivy python framework (cross platform python framework for multi-touch applications)
 
* Tested initial code snippets to port ATM-Software to Kivy for RPi touchscreen (thanks @talentpierre!)
 
* Finished code for better wallet management on the ATM 
 
* Outlined webserver/database solution to allow web access onto the ATM (for statistics, settings, etc.)
 
  
 
===LNbits===
 
===LNbits===
Line 40: Line 21:
  
 
see video: https://www.youtube.com/watch?v=xnHz6NbTgZg
 
see video: https://www.youtube.com/watch?v=xnHz6NbTgZg
 
===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
 
  
 
===Quickening - Room77 Point of Sale===
 
===Quickening - Room77 Point of Sale===
Line 56: Line 29:
  
 
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-pos-room77-quickening
 
===Lightnite===
 
 
Challenges: https://issues.lightnite.io
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-lightnite-game
 
 
===Specter-Desktop===
 
 
Quickinfo on Specter: https://twitter.com/CryptoAdvance/status/1233833767283941376?s=20
 
 
Challenge: https://github.com/rootzoll/raspiblitz/issues/1059#issuecomment-605526623
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-specter-desktop
 
 
'''Outcomes:'''
 
* People were testing different hardware wallets
 
* k9ert: Fixed Bug on RaspiBlitz install https://github.com/rootzoll/raspiblitz/pull/1108/
 
  
 
===TOR2IP-Tunnelservice===
 
===TOR2IP-Tunnelservice===
Line 87: Line 42:
 
* Openoms: SetUp-Tutorial: https://github.com/openoms/bitcoin-tutorials/blob/master/tor2ip_tunnel.md
 
* Openoms: SetUp-Tutorial: https://github.com/openoms/bitcoin-tutorials/blob/master/tor2ip_tunnel.md
 
* k9ert: prototyping multiuser-frontend (web service with Lightning Payment)
 
* k9ert: prototyping multiuser-frontend (web service with Lightning Payment)
 
===SendMany App===
 
 
Project Info: https://github.com/fusion44/sendmany
 
 
Challenge: https://github.com/rootzoll/raspiblitz/issues/1000#issuecomment-605526180
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-keysendsendmany
 
 
'''Outcome:'''
 
* Made a keysend chat over a RaspiBlitz with keysend activated (3 hops on LN)
 
* Add SendMany App to the RaspiBlitz for install
 
  
 
===Wiki Lightning Spam Protection===
 
===Wiki Lightning Spam Protection===
Line 105: Line 48:
  
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/media-wiki-spam-protection
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/media-wiki-spam-protection
 
===The Eye of Satoshi (python-teos)===
 
 
The Eye of Satoshi is a Lightning watchtower compliant with BOLT13, written in Python 3.
 
 
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-the-eye-of-satoshi
 
 
'''Outcome''':
 
 
* Added <code>delete_appointment</code> command to remove data from the tower on user request. To be reviewed.
 
 
* A docker image of the system has been created to simplify the deployment. To be reviewed.
 
 
* Integration with c-lightning via the plugin system. WIP.
 
 
===Exchange Union/OpenDEX===
 
 
Integrate c-lightning as swap client (and more): https://github.com/ExchangeUnion/xud/issues?q=is%3Aopen+is%3Aissue+label%3Ahackathon
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/x-opendex
 
 
'''Outcome''':
 
 
* Figured out that we need another hold invoice plugin, started with req & basic development, tracking in https://github.com/lightningd/plugins/issues/98
 
 
* Figured out ways to enforce payment locktime, added todo's & tbd's in xud integration issue, tracking in https://github.com/ExchangeUnion/xud/issues/1281
 
 
===getroutevia: a c-lightning plugin for route search with restrictions===
 
 
Find routes that satisfy additional criteria, for instance, must 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-getroutevia-c-lightning-plugin
 
 
The initial version is implemented, it lets you specify a list of nodes that a route must go through. Apart from this extra parameter, the usage is similar to getroute. It is possible to enforce either that it goes through all or any of them (you have to modify the source code). Other restrictions are also possible (a simple example is in the code). Some questions I faced are in the [https://github.com/s-tikhomirov/getroutevia/issues/ issues].
 
 
===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 [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
 
 
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
 
 
'''Outcome:'''
 
* Created the core of multi-process & multi-thread architecture for new lightning node. [https://github.com/LNP-BP/lnpd See lnpd repo]
 
* Abstracted LN layers for transport (BOLT-8) & peer messaging (BOLT-1). [https://github.com/LNP-BP/rust-lnpbp See rust-lnpbp repo]
 
* Peer daemon able to run P2P remote node communications: extension point for channel negotiation. [https://github.com/LNP-BP/lnpd/blob/master/src/bin/peerd.rs See lnpd peerd.rs]
 
 
===Weenode===
 
 
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.
 
 
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-weenode
 
 
'''Outcome:'''
 
 
* weenode scripts got tested and updated on my own hardware, and finally merged into master
 
* so now it's time for everybody to get their own weenode running!
 
 
 
===Backup plugin for c-lightning===
 
 
Backups are a major issue in the Lightning Protocol, given that any sort of
 
dataloss could potentially result in loss of funds. This means that restoring
 
an old backup of the database could result in the node broadcasting an old
 
state, which is a cheat attempt in the protocol, which is punished.
 
 
The backup c-lightning plugin (https://github.com/lightningd/plugins/pull/97)
 
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:
 
** 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
 
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.
 
 
 
'''Outcome:'''
 
 
* The backup plugin now has a matching `backup-cli` tool to initialize the backend and to restore from a backup
 
* In addition to the file-backend we now have a dropbox backend that minimizes bandwidth requirements by splitting the backup into multiple files that are uploaded separately
 
* The Dropbox backend also allows the backup to be GPG encrypted
 
 
Initial implementation:
 
 
* https://github.com/lightningd/plugins/pull/97
 
* https://github.com/lightningd/plugins/pull/100/files
 
 
===Low Bandwidth Lightning Channels===
 
 
There is a need to strengthen the Bitcoin ecosystem for people whose only computing device is a low end mobile phone and who live where Internet access is expensive, unreliable, intermittent or censored. [https://github.com/willcl-ark willcl-ark] created a way to proxy Lightning channels over low-bandwidth communication systems using a c-lightning patch "[https://github.com/willcl-ark/lnproxy/blob/master/clightning/noencrypt_final.patch noencrypt]" and python plugin called [https://github.com/willcl-ark/lnproxy lnproxy]. This plugin is written specifically to use a goTenna radio connected to a computer over USB, but this system can also be adapted for other low-bandwidth channels like SMS (for people who cannot afford mobile internet), LoRa mesh radio or similar systems. [https://github.com/jharveyb jharveyb] is working on [https://github.com/jharveyb/fldigi-proxy fldigi-proxy] to help adapt LNProxy for ham radio and willcl-ark has created a [https://github.com/willcl-ark/lnproxy/commits/2020-02-23-ham fork of lnproxy that uses sockets] to work with the fldigi-proxy.
 
 
You can read more about LNProxy [https://inthemesh.com/archive/lntenna-python-3/ here] to get an overview of the project.
 
 
The challenge is to adapt LNProxy to a different low-bandwidth communication method. For example, LoRa radio, Bluetooth or an SMS API.
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/lnproxy
 
 
[[User:Remyers]] is available for additional information and mentorship. Contact Richard at [https://mm.fulmo.org/fulmo/messages/@remyers @remyers] on fulmo.org or [https://twitter.com/remyers_ @remyers_] on twitter.
 
 
=== Point Time Locked Contracts (PTLC) ===
 
 
The current Lightning network uses HTLCs to forward payments across multiple hops.
 
There are a lot of proposals for improving the Lightning building on an alternative to HTLCs, so called Point Time Locked Contracts (PTLC).
 
They allow improving privacy ("payment decorrelation"), improving multipath payments ("high AMP"), payments conditional on signatures ("DLCs over Lightning") and more (https://suredbits.com/category/payment-points/).
 
However, it was thought that PTLCs either require complicated cryptography or a Schnorr signature soft fork in Bitcoin.
 
But it turned out that this can be achieved in today's Bitcoin using relative simple cryptography using a construction called "single signer ECDSA adaptors" (https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html).
 
This challenge is about demoing PTLCS using this adaptor construction on mainnet.
 
 
https://mm.fulmo.org/fulmo/channels/poodles
 
 
* Replacing HTLCs with Payment Points https://suredbits.com/payment-points-part-1/
 
* https://github.com/LLFourn/one-time-VES
 
* https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html
 
* Getting started with bitcoin-s: https://bitcoin-s.org/docs/getting-setup
 
* Getting started with libsecp: https://github.com/ElementsProject/secp256k1-zkp
 
 
'''Outcome:'''
 
* Implemented single signer ECDSA adaptor signatures on top of libsecp:  https://github.com/jonasnick/secp256k1/pull/14/
 
* Working GUI that actually executes a PTLC for payer or receiver https://github.com/bitcoin-s/bitcoin-s/pull/1302
 
* Video of the working GUI in action https://youtu.be/w9o4v7Idjno
 
 
=== Bitcoin Router ===
 
 
A high powered plug-and-play router built for the modern Internet user running a bitcoin and lightning fullnode, VPN and Tor so that all your private data stays secure inside your home. Find out more here: https://wiki.fulmo.org/index.php?title=Bitcoinrouter
 
 
Chatroom to get started: https://router.bitcoin-node.org/mattermost/signup_user_complete/?id=5cwauujfxirkifg86ah317gm6r
 
 
'''Outcome'''
 
 
* Run TOR hidden services
 
* Sync Bitcoin on Turris MOX
 
* Demo for user interface configuration
 
 
'''Challenges'''
 
* One of the main challenges with running on the Mox A out of the box (https://www.turris.cz/en/mox/overview) is that the Marvell Armada 3720 processor is designed to be used on low powered devices that are always on. Syncing the Bitcoin blockchain is processor intensive and can lead to stability issues. Our longer term solution is to come up with our own Mox module which could have its own processor.
 
* We are concerned that hosting blockchain data so close to the router could make it an attractive target for hackers. One solution would be to create our own PCB with a dedicated CPU for all blockchain data and tasks.
 
* In the future, we see implications for hot walleting with LN and also coin mixing.
 
* We would love to get feedback on the issues above as well as on general security issues, and we very much welcome the help of anyone with experience in WRT.
 
 
===Bitcoin Bounty Hunt(Video Game) ===
 
 
 
Chatroom to get started: https://mm.fulmo.org/fulmo/channels/bitcoin-bounty-hunt-online-fps
 
 
Bitcoin Bounty Hunt is a Online First-Person-Shooter centered around Lightning Network micropayments.
 
 
'''Challenges'''
 
* Grab a Steam key in the MM-Channel and test the game
 
 
'''Outcome'''
 
* Tested the game and found a nice 2 million satoshi inflation bug (not fixed yet :P)
 
 
Play the game after the Wrap-up stream!!
 
 
  
 
==Need more ideas?==
 
==Need more ideas?==
  
Looking for yet another idea to build a small LApp? Check out [[ideas for LApps]]!
+
Looking for yet another idea to build a small LApp? Check out [[Ideas for LApps]]!
  
 
==Adding your Project==
 
==Adding your Project==
  
 
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.
 
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.

Revision as of 22:00, 28 April 2020

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

Please work on the branch"payment_connector" use the version in the folder "TheQuickening"

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

Outcome:

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

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.