⚠️ Warning: Early-stage, breaking changes are expected.
API for interacting with a Lightning Node.
Lighstorm::Lightning::Channel.mine.first.myself.node.alias
Lighstorm is an opinionated abstraction layer on top of the lnd-client.
It brings an object-oriented approach for interacting with a Lightning Node, influenced by the Active Record Pattern and Active Record Models conventions.
However, despite the fluidity of Object Orientation being desired in its public interface, internally, most of its code is structured following the Hexagonal Architecture and Functional Programming principles.
It aims to be intuitive to use while being highly reliable, as it deals with people's money, and easily testable since its tests are the foundation for its reliability.
Although it tries to stay close to Lightning's terminologies, it brings its own vocabulary and data modeling, optimizing for programmer happiness.
Add to your Gemfile
:
gem 'lighstorm', '~> 0.0.16'
require 'lighstorm'
# lndconnect
Lighstorm.connect!(
'lndconnect://127.0.0.1:10009?cert=MIICJz...JBEERQ&macaroon=AgEDbG...45ukJ4'
)
# File Path
Lighstorm.connect!(
address: '127.0.0.1:10009',
certificate_path: '/lnd/tls.cert',
macaroon_path: '/lnd/data/chain/bitcoin/mainnet/admin.macaroon'
)
puts Lighstorm.version # => 0.0.16
Lighstorm::Lightning::Node.myself.alias # => icebaker/old-stone
Lighstorm::Lightning::Invoice.create(
description: 'Coffee',
amount: { millisatoshis: 1_000 },
payable: 'once'
)
Lighstorm::Lightning::Invoice.decode('lnbc20m1pv...qqdhhwkj').pay
Lighstorm::Lightning::Invoice.decode('lnbc20m1pv...qqdhhwkj').pay(
fee: { maximum: { millisatoshis: 1000 } }
)
Lighstorm::Satoshis.new(
millisatoshis: 75_621_650
).satoshis # => 75_621
Check the full documentation.
Check the development documentation.