status: alpha (not ready for production)
Cli lightning network server, based on LDK (rust-lightning). Provides HTTP-RPC interface.
java -jar ./out/artifacts/hello_main_jar/hello.main.jar
./cli/
directory (npm i && npm start
)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.
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.
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.
MIT