No commit activity in last 3 years
No release in over 3 years
Connect to the Lightning Network with Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

= 1.12.0
= 1.12.0
 Project Readme

LIGHTNING.RB

⊂_ヽ
  \\ Λ_Λ
   \( ˇωˇ)
    / ⌒
  /  へ\
  /  / \\
   レ ノ   ヽ_つ
  / /  So you are telling me I can use Lightning from Ruby now? ⚡️ 
 ( (ヽ
 | |、 \
 | 丿 \
 | |  ) /
ノ )  Lノ

A Ruby library to talk to Lightning Nodes

Install

gem install lightning_network

Now we need to configure environment variables for:

  • admin.macaroons : ENV['lnd_macaroon']
  • cert.tls : ENV['lnd_cert']
  • Lightning Network Node : ENV['lnd_host']

require 'lightning_network'

irb(main):002:0> ENV["lnd_host"] = "lightning:10009"
=> "lightning:10009"
irb(main):006:0> ENV["lnd_cert"] = "./tls.cert"
=> "./tls.cert"

irb(main):009:0> ENV["lnd_macaroon"] = "./admin.macaroon"
=> "./admin.macaroon"

irb(main):012:0> Node.new.get_info
=> ⚡️ 


Backends

We curently fully support LND.

Authentication

We use Macaroons and the certificate generated by lnd to authenticate. See Node.rb.

TODO:

  • Yard Documentation for:
  • Node::Payments
  • Node::Channels
  • Node::OnChain
  • Node::Peers
  • Node::Wallet

LND

We fully support lnd-cli with a Ruby like API. For example:

Node.new.get_info 

Node::Payments.new.list_invoices

Node::Channels.new.list_channels

Node::OnChain.new.send_coins(address, number)

Node::Peers.new.list_peers

Node::Wallet.new_address

LN-CLI HELP

The following is the help from ln-cli. We wrapped most of the commands below with a Ruby like syntax.


############
  Legend
############

* DONE
- WON'T DO
p PENDING

------------



COMMANDS:

*     getinfo     Returns basic information related to the active daemon.
-     debuglevel  Set the debug level.
-     stop        Stop and shutdown the daemon.
-     help, h     Shows a list of commands or help for one command

   Startup:
-     create  Initialize a wallet when starting lnd for the first time.
-     unlock  Unlock an encrypted wallet at startup.




   Payments:

p    getchaninfo       Get the state of a channel.
p    queryroutes    Query a route to a destination.
p    fwdinghistory  Query the history of all forwarded HTLCs.



*     payinvoice     Pay an invoice over lightning.
*     sendpayment    Send a payment over lightning.
*     addinvoice     Add a new invoice.
*     lookupinvoice  Lookup an existing invoice by its payment hash.
*     decodepayreq   Decode a payment request.
*     listinvoices   List all invoices currently stored.
*     listpayments   List all outgoing payments.

   Channels:

p     openchannel       Open a channel to a node or an existing peer.
*     closechannel      Close an existing channel.
*     closeallchannels  Close all existing channels.

*     channelbalance    Returns the sum of the total available channel balance across all open chans
*     pendingchannels   Display information pertaining to pending channels.
*     listchannels      List all open channels.
*     getnetworkinfo    Get statistical information about the current state of the network.
*     feereport         Display the current fee policies of all active channels.
-     updatechanpolicy  Update the channel policy for all channels, or a single channel.



   On-chain:

*     sendmany       Send bitcoin on-chain to multiple addresses.
*     sendcoins      Send bitcoin on-chain to an address.
*     listchaintxns  List transactions from the wallet.


*   Peers:

*     connect        Connect to a remote lnd peer.
*     disconnect     Disconnect a remote lnd peer identified by public key.
*     listpeers      List all active, currently connected peers.
*     describegraph  Describe the network graph.
*     getnodeinfo    Get information on a specific node.

   Wallet:

*     newaddress     Generates a new address.
*     walletbalance  Compute and display the wallet's current balance.
*     signmessage    Sign a message with the node's private key.
*     verifymessage  Verify a message signed with the signature.