lightninglabs / lightning-node-connect

MIT License
78 stars 22 forks source link

Lightning Node Connect (LNC)

Secure, private access to a Lightning node over an untrusted web server. LNC leverages Password Authenticated Key Exchange (PAKE) and macaroon-scoped gRPC connections to enable developers/users a trust-minimized application experience. LNC removes various network obstructions (NAT etc.) to provide disintermediated access to user-run Lightning Network infrastructure and app UX.

Lightning Node Connect improves on prior trust/access efforts at solving this problem (like LND Connect) by using a PAKE instead of manually managing TLS certificates and macaroons. Lightning Node Connect's PAKE is combined with the Noise Protocol Framework to create a pairing flow where a user only needs to enter a short human-readable passphrase (scan or click a link) to establish a secure end-to-end encrypted/mutually-authenticated connection with an application. LNC uses macaroons to allow users to set a granular set of capabilities a remote website/application is able to access.

LNC leverages Go’s excellent WASM toolchain in order to allow browsers to securely connect to a remote Lightning Node. This WASM integration will allow for richer web-based Lightning applications, which are a necessary component to realize the Lightning Native Web.

Read the full LNC launch blog post here.

Components

Lightning Node Connect diagram

LNC is a secure connection protocol for bridging the gap between any Lightning node and the web. It is designed to work with any Lightning Network implementation but this reference project is built to work with Lightning Terminal / lnd specifically.

The following Open Source (MIT licensed) components are required to build a secure LNC connection: