Giter Site home page Giter Site logo

pynezz / lnsocket Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jb55/lnsocket

0.0 0.0 0.0 809 KB

A minimal C & js library for sending messages to lightning nodes

License: Other

Shell 1.79% JavaScript 6.08% Python 2.05% C 82.36% Go 1.83% Rust 2.39% Nix 0.48% Makefile 3.02%

lnsocket's Introduction

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

  • See test.c for a ping/pong example

  • See lnrpc.c for an RPC example

Contributing

Send patches to [email protected]

$ git config format.subjectPrefix 'PATCH lnsocket'
$ git config sendemail.to 'William Casarin <[email protected]>'
$ git send-email --annotate HEAD^

See git-send-email.io3 for configuring your mailer

You can open a PR on github4 as well

Footnotes

  1. https://github.com/lightningnetwork/lnd/tree/master/brontide

  2. https://github.com/fiatjaf/makeinvoice/blob/d523b35084af04883f94323dc11a50c2a99d253d/makeinvoice.go#L366

  3. https://git-send-email.io/

  4. https://github.com/jb55/lnsocket

lnsocket's People

Contributors

fiatjaf avatar jb55 avatar lvaccaro avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.