Date: Thu, 31 Mar 2022 16:41:43 -0700 From: William Casarin To: bounty@hrf.org Subject: LNLink - Strike x HRF Lightning Bounty TipJar submission MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=us-ascii Hey Team, Here is my submission for the TipJar Lightning Bounty Challenge: > 1 BTC to a FOSS non-custodial wallet that integrates BOLT 12 functionality to their wallet so that any user can simply generate a QR code from their wallet that can be shared with the world as a receive address or Lightning tip jar. The QR can be pinned to a Twitter profile, printed out and displayed in a store, for example. Senders scanning the QR should be able to pay X amount and that amount should arrive in the user???s non-custodial wallet. The QR code should not reveal the public key or IP address of the user. LNLink ====== I have created a non-custodial iOS lightning wallet called LNLink[1] that can connect to a clightning node from anywhere to send and receive lightning payments. LNLink is completely free and opensource (FOSS). It can: * Generate bolt12 invoices[2] * Generate bolt11 invoices[4] * Pay bolt12 invoices[2][3] * Pay bolt11 invoices * Pay lnurls[5] * Pay lnaddresses[5] To do this, I have created an open source library called lnsocket[6] that connects to the lightning network and controls a clightning node remotely. This is novel because it makes it super easy for people who are running nodes to access it remotely without having to run additional software[7], such as VPNs, TOR, web servers, etc. TipJar Web Widget ================= I have created a quick and easy way to view donations to a bolt12 offer via a clightning plugin called clightning-offer-summary[8]. This plugins creates a new clightning rpc that summarizes payments to a bolt12 offer. Additionally, I have adapted lnsocket[6], the library used by LNLink[1], to work in the browser via websockets. Using lnsocket, you are able to connect to your own clightning node inside a browser, call the clightning-offer-summary plugin, which results in a tallycoin-like web widget, based on bolt12s, in a non-custodial manner and with minimal software runtime requirements. There is a demo of this tipjar widget on https://jb55.com and https://lnlink.app. In other words, this enables a fully-noncustodial tipjar by connecting to your own node over the lightning network inside the browser via websockets! Yes, it's as cool as it sounds. The code that powers the tipjar can be found here: https://jb55.com/tipjar.js About Me ======== I am a bitcoin core dev/frequent contributor[9][10] and clightning contributor[11]. I have been in the bitcoin space since 2010 and am one of the first 10 lightning nodes on mainnet[12]. These days I mainly work on unpaid open source bitcoin projects like lnlink, bitcoin-core, clightning and nix-bitcoin in my spare time. Thanks for supporting open source and I hope you consider my project for your bounty! Cheers, Will [1] https://lnlink.app [2] https://twitter.com/jb55/status/1509659366261145600 [3] https://twitter.com/jb55/status/1509640598784917512 [4] https://twitter.com/jb55/status/1507887337044283394 [5] https://twitter.com/jb55/status/1506124074539315202 [6] https://github.com/jb55/lnsocket [7] https://twitter.com/jb55/status/1490129780766765056 [8] https://github.com/jb55/clightning-offer-summary [9] https://jb55.com/s/jb55-btc-core-frequent.png [10] https://github.com/bitcoin/bitcoin/commits?author=jb55 [11] https://github.com/ElementsProject/lightning/commits?author=jb55 [12] https://twitter.com/jb55/status/1362438808189378566