BlueWallet / HelloLightning

Lightning Network node
MIT License
10 stars 2 forks source link
bitcoin kotlin lightning lightning-network

status: alpha (not ready for production)

Hello, Lightning!

Cli lightning network server, based on LDK (rust-lightning). Provides HTTP-RPC interface.

Example:

Philosophy

Barebone Java-based server cant do much, out of the box it can only do lightning peers networking and disk persistence. All the functionality should be implemented on upper level (like, GUI application, or nodejs cli script, etc), that includes: providing blockchain data, managing onchain coins to open channels (via PSBT), keeping a list of peers to keep connections etc

So currently repo has ldk-server (compiled from kotlin, considered a lower level), which is supposed to run and provide RPC, and a cli nodejs process which controls it (considered upper level). Cli process utilizes following apis:

Whole setup is thus quite lightweight.

Security

Server is intended to run in a secure environment. Thus, on-disk storage is not encrypted, and RPC server handles connections without TLS (plain HTTP). Also, even though RPC listens on 127.0.0.1, it has no auth.

TODO

Available DUMB-RPC/HTTP calls

Storage

Data is written in ~/.hellolightning (non-configurable). There are files with states per each channel, and one for the channel manager. Upon the first launch of cli control script, given java process is running, HelloLightning will be seeded with a secure entropy, which is then stored in seed.txt. All events that must be passed from lower level (lightning) to upper level (control script) are served through their respective RPCs, and also stored as json files.

License

MIT