Awesome
lnsocket
A simple C, JS and Go library for sending messages over the lightning network.
Thanks to Rusty and the clightning project for much of this code, I have adapted it to be more library friendly.
Motivation
I wanted a way to send custom messages to my lightning node, such as RPC. Building this as a simple C library will allow you to speak the lightning network in native applications, like on mobile.
Dependencies
You'll need libtool
, autoconf
, and automake
for the libsodium
&
secp256k1
submodules, but otherwise there are no dependencies.
You'll need emscripten
for the wasm
build.
Building
$ make
iOS
$ make ios
This will build lnsocket.a
, libsodium.a
and libsecp256k1.a
under
target/ios
for arm64
and ios-sim-x86
.
WASM/JS/Web
Building manually:
$ make js
This will build lnsocket.js
and lnsocket.wasm
in target/js
so that you
can connect to the lightning network from your browser via websockets.
There are packaged versions of the js build under dist/js
If you are in a web environment that supports npm modules, you can import lnsocket using npm:
const LNSocket = require('lnsocket')
async function makeRequest(method, params, rune) {
const ln = await LNSocket()
ln.genkey()
await ln.connect_and_init(node_id, host)
// ... etc
}
The plain js file under dist/js declares an lnsocket_init()
function like so:
const LNSocket = await lnsocket_init()
const ln = LNSocket()
ln.genkey()
See examples/websockets.js for a demo.
NodeJS
$ npm install --save lnsocket
See examples/node.js
Go
There is a Go version of lnsocket written using lnd's brontide1.
You can import it via:
import "github.com/jb55/lnsocket/go"
It is currently used in fiatjaf's makeinvoice go library2 if you want an example of its usage.
Rust
There are some initial rust bindings which you can build via: make rust
C Examples
Contributing
Send patches to jb55@jb55.com
$ git config format.subjectPrefix 'PATCH lnsocket'
$ git config sendemail.to 'William Casarin <jb55@jb55.com>'
$ git send-email --annotate HEAD^
See git-send-email.io3 for configuring your mailer
You can open a PR on github4 as well