Ruby Lightning Network Daemon Client
⚠️ Warning: Early-stage, breaking changes are expected.
This is a low-level client library. For a better experience, you may want to check out the Lighstorm abstraction.
Usage
Add to your Gemfile
:
gem 'lnd-client', '~> 0.0.5'
require 'lnd-client'
puts LNDClient.version # => 0.0.5
client = LNDClient.new(
certificate_path: '/lnd/tls.cert',
macaroon_path: '/lnd/data/chain/bitcoin/mainnet/admin.macaroon',
socket_address: '127.0.0.1:10009'
)
client.lightning.wallet_balance.total_balance # => 101527
client.lightning.wallet_balance.to_h # =>
# {:total_balance=>101527,
# :confirmed_balance=>101527,
# :unconfirmed_balance=>0,
# :locked_balance=>0,
# :reserved_balance_anchor_chan=>20000,
# :account_balance=>{"default"=>{:confirmed_balance=>101527, :unconfirmed_balance=>0}}}
client.lightning.get_node_info(
pub_key: '02d3c80335a8ccb2ed364c06875f32240f36f7edb37d80f8dbe321b4c364b6e997'
).node.alias # => 'icebaker/old-stone'
client.lightning.subscribe_channel_graph do |data|
puts data.inspect # => { ... }
end
client.router.subscribe_htlc_events do |data|
puts data.inspect # => { ... }
end
Channel Arguments
require 'lnd-client'
puts LNDClient.version # => 0.0.5
client = LNDClient.new(
certificate_path: '/lnd/tls.cert',
macaroon_path: '/lnd/data/chain/bitcoin/mainnet/admin.macaroon',
socket_address: '127.0.0.1:10009'
)
client.lightning(
channel_args: { 'grpc.max_receive_message_length' => 1024 * 1024 * 50 }
)
graph = client.lightning.describe_graph
graph.nodes # => [...]
graph.edges # => [...]
Documentation
require 'lnd-client'
puts LNDClient.version # => 0.0.5
client = LNDClient.new(
certificate_path: '/lnd/tls.cert',
macaroon_path: '/lnd/data/chain/bitcoin/mainnet/admin.macaroon',
socket_address: '127.0.0.1:10009'
)
client.doc.services # => ['lightning', 'router']
client.lightning.doc.available_methods # =>
# ['abandon_channel',
# 'add_invoice',
# 'bake_macaroon',
# 'batch_open_channel',
# 'channel_acceptor',
# 'channel_balance',
# 'check_macaroon_permissions',
# 'close_channel',
# 'closed_channels',
# # ...
# 'get_node_info'
# ]
client.lightning.doc.describe(:get_node_info) # =>
# { method: 'get_node_info',
# input: { pub_key: '', include_channels: false},
# output: { node: nil, num_channels: 0, total_capacity: 0, channels: []}}
client.lightning.doc.grpc(:get_node_info)
# #<struct GRPC::RpcDesc
# name=:GetNodeInfo,
# input=Lnrpc::NodeInfoRequest,
# output=Lnrpc::NodeInfo,
# marshal_method=:encode,
# unmarshal_method=:decode>
Development
# Gemfile
gem 'lnd-client', path: '/home/user/lnd-client'
# demo.rb
require 'lnd-client'
puts LNDClient.version
bundle
rubocop -A
Upgrading gRPC Proto Files
bundle exec rake grpc:upgrade
Publish to RubyGems
gem build lnd-client.gemspec
gem signin
gem push lnd-client-0.0.5.gem