1
0
mirror of https://github.com/bumi/lnrpc synced 2026-02-20 09:27:50 +00:00

23 Commits

Author SHA1 Message Date
9b1499616d Add PaymentResponse wrapper
This is an experimental wrapper around the send_payment shortcut calls.
The goal is to provide a simple interface to check if the payment was
successful.
2020-08-29 19:40:45 +02:00
f31a499e49 v0.11.0 2020-08-28 22:55:21 +02:00
fbf38c255e Add script to generate LND ruby GRPC service files 2020-08-28 14:37:57 +02:00
404ed3b99e Add support for v0.11 GRPC services
This also refactors the client GRPC wrapper to dynamically load the
request objects.
All GRPC generated client files now live under lib/grpc_services
2020-08-28 14:14:50 +02:00
579fc423ea Update examples.rb 2020-07-03 16:29:03 +02:00
b6e048455d Add funding metadata to gemspec 2020-05-09 14:57:47 +02:00
9b6342becc Update README for v0.10.0 2020-05-09 14:50:11 +02:00
3765d9f4a6 gitignore build .gem files 2020-05-09 14:37:08 +02:00
c9e4f23cf4 v0.10.0 with support for routerrpc 2020-05-09 14:37:08 +02:00
9b098ef53e v0.10.0 2020-05-09 14:37:08 +02:00
c8a7a6e657 v0.9.0 2020-05-09 14:35:47 +02:00
e2bad78744 Update rpc files for v0.9.0-beta 2020-05-09 14:35:47 +02:00
24a6390f89 Merge pull request #10 from bumi/dependabot/bundler/rake-tw-13.0
Update rake requirement from ~> 10.0 to ~> 13.0
2020-04-19 20:29:24 +02:00
dependabot[bot]
50cda0406c Update rake requirement from ~> 10.0 to ~> 13.0
Updates the requirements on [rake](https://github.com/ruby/rake) to permit the latest version.
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](https://github.com/ruby/rake/compare/v10.5.0...v13.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-02-29 15:34:03 +00:00
0c45536158 Actually it should be v0.8.0 2019-10-27 15:59:23 +01:00
f219a4f254 v0.8.0-beta 2019-10-27 15:54:50 +01:00
ebc8dc7b37 bundle update 2019-10-27 15:54:22 +01:00
3e622ebb54 Update rpc files for v0.8.0-beta 2019-10-27 15:52:31 +01:00
ac284d3e06 v0.8.0.beta.rc1 2019-09-30 00:20:02 +02:00
bdcc1d008d Update grpc files for v8.0.0.beta-rc1 2019-09-30 00:18:22 +02:00
1b0a8a7df2 v0.7.1 2019-09-30 00:05:11 +02:00
809f80a8ed Update grpc files for v0.7.1 2019-09-30 00:03:15 +02:00
83d71fae31 Use version 0.7.0 in the installation example 2019-07-03 15:33:47 +00:00
36 changed files with 3015 additions and 3478 deletions

2
.gitignore vendored
View File

@@ -11,3 +11,5 @@
.rspec_status
.ruby-version
*.gem

View File

@@ -1,7 +1,7 @@
PATH
remote: .
specs:
lnrpc (0.7.0)
lnrpc (0.10.0)
google-protobuf (>= 3.7)
grpc (>= 1.19.0)
@@ -9,26 +9,26 @@ GEM
remote: https://rubygems.org/
specs:
diff-lcs (1.3)
google-protobuf (3.8.0)
google-protobuf (3.9.2)
googleapis-common-protos-types (1.0.4)
google-protobuf (~> 3.0)
grpc (1.21.0)
google-protobuf (~> 3.7)
grpc (1.24.0)
google-protobuf (~> 3.8)
googleapis-common-protos-types (~> 1.0)
rake (10.5.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-core (3.8.2)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.4)
rake (13.0.1)
rspec (3.9.0)
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
rspec-core (3.9.0)
rspec-support (~> 3.9.0)
rspec-expectations (3.9.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.1)
rspec-support (~> 3.9.0)
rspec-mocks (3.9.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.2)
rspec-support (~> 3.9.0)
rspec-support (3.9.0)
PLATFORMS
ruby
@@ -36,7 +36,7 @@ PLATFORMS
DEPENDENCIES
bundler (~> 1.17)
lnrpc!
rake (~> 10.0)
rake (~> 13.0)
rspec (~> 3.0)
BUNDLED WITH

View File

@@ -3,13 +3,15 @@
a [gRPC](https://grpc.io/) client for [LND, the Lightning Network Daemon](https://github.com/lightningnetwork/lnd/) packed as ruby gem.
## Installation
Note: there is still an GRPC/protobuf [issue with Ruby 2.7](https://github.com/protocolbuffers/protobuf/issues/7070).
So lnrpc requires Ruby < 2.7.
Add this line to your application's Gemfile:
```ruby
gem 'lnrpc', '~> 0.6.1'
gem 'lnrpc', '~> 0.10.0'
```
lnrpc follows the lnd versioning, thus it is recommended to specify the exact version you need for your lnd node as dependency (see [#Versioning](#Versioning)).
@@ -30,10 +32,12 @@ This gem makes the gRPC client classes created from the [LND service defintions]
```ruby
require "lnrpc"
# the gRPC client is available under the Lnrpc namespace, e.g.
# With the changes in LND v.10.0 this load the `Lnrpc` and `Routerrpc` namespace
Lnrpc::Lightning::Stub
Routerrpc:::Routerrpc::Stub
Lnrpc::GetInfoRequest
...
```
Learn more about [gRPC](https://grpc.io/) on [gRPC.io](https://grpc.io/).
@@ -55,17 +59,26 @@ client = Lnrpc::Lightning::Stub.new("localhost:10009", GRPC::Core::ChannelCreden
request = Lnrpc::GetInfoRequest.new
response = client.get_info(request, { metadata: { macaroon: macaroon } }) #=> Lnrpc::GetInfoResponse
puts response.alias
router = Routerprc::Router::Stub.new("localhost:10009", GRPC::Core::ChannelCredentials.new(self.credentials))
...
```
### Client wrapper
NOTE: v10.0 has breaking changes!
An optional client wrapper ([Lnrpc::Client](https://github.com/bumi/lnrpc/blob/master/lib/lnrpc/client.rb)) makes
initializing the gRPC client easier and removes the need for some boilerplate code for calling RPC methods.
#### Example
```ruby
lnd = Lnrpc::Client.new({credentials_path: '/path/to.cert.cls', macaroon_path: '/path/to/admin.macaroon'})
lnd.get_info
lnd.lightning # => Lnrpc::Lightning::Stub
lnd.router # => Lnrpc::Router::Stub
lnd.ligthning.get_info
```
Also have a look at [examples.rb](https://github.com/bumi/lnrpc/blob/master/examples.rb)
@@ -96,7 +109,8 @@ lnd = Lnrpc::Client.new({
})
# the actual gRPC client is available through:
lnd.grpc_client
lnd.lightning.grpc
lnd.router.grpc
```
#### Calling RPC methods
@@ -108,19 +122,19 @@ If the first parameter is a hash or blank the corresponding gRPC request object
Example:
```ruby
client.get_info
client.lightning.get_info
# is the same as:
client.grpc_client.get_info(Lnrpc::GetInfoRequest.new)
client.lightning.grpc.get_info(Lnrpc::GetInfoRequest.new)
client.list_channels(inactive_only: true)
client.lightning.list_channels(inactive_only: true)
# is the same as:
request = Lnrpc::ListChannelsRequest.new(inactive_only: true)
client.grpc_client.list_channels(request)
client.lightning.grpc.list_channels(request)
client.wallet_balance.total_balance
client.lightning.wallet_balance.total_balance
# is the same as:
request = Lnrpc::WalletBalanceRequest.new()
client.grpc_client.wallet_balance(request).total_balance
client.lightning.grpc.wallet_balance(request).total_balance
```
## Using with BTC Pay Server
@@ -145,13 +159,11 @@ see [rubygems](https://rubygems.org/gems/lnrpc) for all available releases.
### Update service definitions
1. Generate `prc_pb.rb` and `rpc_services_pb.rb`
The script `generate-grpc-service-files.sh` can be used to generate the GRPC ruby files.
The files will be stored in `lib/grpc_services`
$ grpc_tools_ruby_protoc -I/usr/local/include -I. -I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --ruby_out=plugins=grpc,paths=source_relative:. --grpc_out=. rpc.proto
$ ./generate-grpc-service-files.sh
2. Copy `rpc.proto`, `rpc_pb.rb` and `rpc_services_pb.rb` to `lib`
3. Update `rpc_services_pb.rb` to use `require_relative` to load `rpc_pb`
## Other resources

View File

@@ -2,18 +2,18 @@ require "lnrpc"
lnd = Lnrpc::Client.new() # use defaults for credentials, macaraoon and address
get_info_res = lnd.get_info
get_info_res = lnd.lightning.get_info
puts get_info_res.alias
puts lnd.wallet_balance.total_balance
puts lnd.lightning.wallet_balance.total_balance
pay_request = "lntb50u1pw9mmndpp5nvnff958pxc9eqknwntyxapjw7l5grt5e2y70cmmnu0lljfa0sdqdpsgfkx7cmtwd68yetpd5s9xct5v4kxc6t5v5s8yatz0ysxwetdcqzysxqyz5vqjkhlyn40z76gyn7dx32p9j58dftve9xrlvnqqazht7w2fdauukhyhr9y4k3ngjn8s6srglj8swk7tm70ng54wdkq47ahytpwffvaeusp500csz"
lnd.pay(pay_request) # or:
lnd.send_payment_sync(payment_request: pay_request)
lnd.router.send_payment_v2(payment_request: pay_request)
invoice_res = lnd.add_invoice(value: 1000, memo: 'I :heart: ruby')
invoice_res = lnd.lightning.add_invoice(value: 1000, memo: 'I :heart: ruby')
puts invoice_res.payment_request
lnd.subscribe_invoices(settle_index: 1).each do |invoice|
lnd.lightning.subscribe_invoices(settle_index: 1).each do |invoice|
puts invoice.payment_request
end

30
generate-grpc-service-files.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/bin/sh
set -o xtrace
FULL_PATH=$(realpath $0)
GEM_DIR=$(dirname $FULL_PATH)
LNRPC_TARGET_DIR="$GEM_DIR/lib/grpc_services"
CURRENT_DIR=$(pwd)
echo $CURRENT_DIR
cd $GOPATH/src/github.com/lightningnetwork/lnd/lnrpc
echo "Generating Ruby GRPC Service Files"
PROTOS="rpc.proto walletunlocker.proto **/*.proto"
# generate files for each proto
for file in $PROTOS; do
DIRECTORY=$(dirname "${file}")
echo "Generating protos from ${file}, into ${LNRPC_TARGET_DIR}/${DIRECTORY}"
# writes all ruby files in the ruby directory
grpc_tools_ruby_protoc -I/usr/local/include \
-I. \
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
-I$GOPATH/src/github.com/lightningnetwork/lnd/lnrpc \
--ruby_out=plugins=grpc,paths=source_relative:${LNRPC_TARGET_DIR} \
--grpc_out=${LNRPC_TARGET_DIR} "${file}"
done
cd $CURRENT_DIR

View File

@@ -0,0 +1,48 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: autopilotrpc/autopilot.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("autopilotrpc/autopilot.proto", :syntax => :proto3) do
add_message "autopilotrpc.StatusRequest" do
end
add_message "autopilotrpc.StatusResponse" do
optional :active, :bool, 1
end
add_message "autopilotrpc.ModifyStatusRequest" do
optional :enable, :bool, 1
end
add_message "autopilotrpc.ModifyStatusResponse" do
end
add_message "autopilotrpc.QueryScoresRequest" do
repeated :pubkeys, :string, 1
optional :ignore_local_state, :bool, 2
end
add_message "autopilotrpc.QueryScoresResponse" do
repeated :results, :message, 1, "autopilotrpc.QueryScoresResponse.HeuristicResult"
end
add_message "autopilotrpc.QueryScoresResponse.HeuristicResult" do
optional :heuristic, :string, 1
map :scores, :string, :double, 2
end
add_message "autopilotrpc.SetScoresRequest" do
optional :heuristic, :string, 1
map :scores, :string, :double, 2
end
add_message "autopilotrpc.SetScoresResponse" do
end
end
end
module Autopilotrpc
StatusRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.StatusRequest").msgclass
StatusResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.StatusResponse").msgclass
ModifyStatusRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.ModifyStatusRequest").msgclass
ModifyStatusResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.ModifyStatusResponse").msgclass
QueryScoresRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.QueryScoresRequest").msgclass
QueryScoresResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.QueryScoresResponse").msgclass
QueryScoresResponse::HeuristicResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.QueryScoresResponse.HeuristicResult").msgclass
SetScoresRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.SetScoresRequest").msgclass
SetScoresResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("autopilotrpc.SetScoresResponse").msgclass
end

View File

@@ -0,0 +1,40 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: autopilotrpc/autopilot.proto for package 'autopilotrpc'
require 'grpc'
require 'autopilotrpc/autopilot_pb'
module Autopilotrpc
module Autopilot
# Autopilot is a service that can be used to get information about the current
# state of the daemon's autopilot agent, and also supply it with information
# that can be used when deciding where to open channels.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'autopilotrpc.Autopilot'
#
# Status returns whether the daemon's autopilot agent is active.
rpc :Status, StatusRequest, StatusResponse
#
# ModifyStatus is used to modify the status of the autopilot agent, like
# enabling or disabling it.
rpc :ModifyStatus, ModifyStatusRequest, ModifyStatusResponse
#
# QueryScores queries all available autopilot heuristics, in addition to any
# active combination of these heruristics, for the scores they would give to
# the given nodes.
rpc :QueryScores, QueryScoresRequest, QueryScoresResponse
#
# SetScores attempts to set the scores used by the running autopilot agent,
# if the external scoring heuristic is enabled.
rpc :SetScores, SetScoresRequest, SetScoresResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,67 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: chainrpc/chainnotifier.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("chainrpc/chainnotifier.proto", :syntax => :proto3) do
add_message "chainrpc.ConfRequest" do
optional :txid, :bytes, 1
optional :script, :bytes, 2
optional :num_confs, :uint32, 3
optional :height_hint, :uint32, 4
end
add_message "chainrpc.ConfDetails" do
optional :raw_tx, :bytes, 1
optional :block_hash, :bytes, 2
optional :block_height, :uint32, 3
optional :tx_index, :uint32, 4
end
add_message "chainrpc.Reorg" do
end
add_message "chainrpc.ConfEvent" do
oneof :event do
optional :conf, :message, 1, "chainrpc.ConfDetails"
optional :reorg, :message, 2, "chainrpc.Reorg"
end
end
add_message "chainrpc.Outpoint" do
optional :hash, :bytes, 1
optional :index, :uint32, 2
end
add_message "chainrpc.SpendRequest" do
optional :outpoint, :message, 1, "chainrpc.Outpoint"
optional :script, :bytes, 2
optional :height_hint, :uint32, 3
end
add_message "chainrpc.SpendDetails" do
optional :spending_outpoint, :message, 1, "chainrpc.Outpoint"
optional :raw_spending_tx, :bytes, 2
optional :spending_tx_hash, :bytes, 3
optional :spending_input_index, :uint32, 4
optional :spending_height, :uint32, 5
end
add_message "chainrpc.SpendEvent" do
oneof :event do
optional :spend, :message, 1, "chainrpc.SpendDetails"
optional :reorg, :message, 2, "chainrpc.Reorg"
end
end
add_message "chainrpc.BlockEpoch" do
optional :hash, :bytes, 1
optional :height, :uint32, 2
end
end
end
module Chainrpc
ConfRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.ConfRequest").msgclass
ConfDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.ConfDetails").msgclass
Reorg = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.Reorg").msgclass
ConfEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.ConfEvent").msgclass
Outpoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.Outpoint").msgclass
SpendRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.SpendRequest").msgclass
SpendDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.SpendDetails").msgclass
SpendEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.SpendEvent").msgclass
BlockEpoch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("chainrpc.BlockEpoch").msgclass
end

View File

@@ -0,0 +1,51 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: chainrpc/chainnotifier.proto for package 'chainrpc'
require 'grpc'
require 'chainrpc/chainnotifier_pb'
module Chainrpc
module ChainNotifier
# ChainNotifier is a service that can be used to get information about the
# chain backend by registering notifiers for chain events.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'chainrpc.ChainNotifier'
#
# RegisterConfirmationsNtfn is a synchronous response-streaming RPC that
# registers an intent for a client to be notified once a confirmation request
# has reached its required number of confirmations on-chain.
#
# A client can specify whether the confirmation request should be for a
# particular transaction by its hash or for an output script by specifying a
# zero hash.
rpc :RegisterConfirmationsNtfn, ConfRequest, stream(ConfEvent)
#
# RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
# intent for a client to be notification once a spend request has been spent
# by a transaction that has confirmed on-chain.
#
# A client can specify whether the spend request should be for a particular
# outpoint or for an output script by specifying a zero outpoint.
rpc :RegisterSpendNtfn, SpendRequest, stream(SpendEvent)
#
# RegisterBlockEpochNtfn is a synchronous response-streaming RPC that
# registers an intent for a client to be notified of blocks in the chain. The
# stream will return a hash and height tuple of a block for each new/stale
# block in the chain. It is the client's responsibility to determine whether
# the tuple returned is for a new or stale block in the chain.
#
# A client can also request a historical backlog of blocks from a particular
# point. This allows clients to be idempotent by ensuring that they do not
# missing processing a single block within the chain.
rpc :RegisterBlockEpochNtfn, BlockEpoch, stream(BlockEpoch)
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,48 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: invoicesrpc/invoices.proto
require 'google/protobuf'
require 'rpc_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("invoicesrpc/invoices.proto", :syntax => :proto3) do
add_message "invoicesrpc.CancelInvoiceMsg" do
optional :payment_hash, :bytes, 1
end
add_message "invoicesrpc.CancelInvoiceResp" do
end
add_message "invoicesrpc.AddHoldInvoiceRequest" do
optional :memo, :string, 1
optional :hash, :bytes, 2
optional :value, :int64, 3
optional :value_msat, :int64, 10
optional :description_hash, :bytes, 4
optional :expiry, :int64, 5
optional :fallback_addr, :string, 6
optional :cltv_expiry, :uint64, 7
repeated :route_hints, :message, 8, "lnrpc.RouteHint"
optional :private, :bool, 9
end
add_message "invoicesrpc.AddHoldInvoiceResp" do
optional :payment_request, :string, 1
end
add_message "invoicesrpc.SettleInvoiceMsg" do
optional :preimage, :bytes, 1
end
add_message "invoicesrpc.SettleInvoiceResp" do
end
add_message "invoicesrpc.SubscribeSingleInvoiceRequest" do
optional :r_hash, :bytes, 2
end
end
end
module Invoicesrpc
CancelInvoiceMsg = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.CancelInvoiceMsg").msgclass
CancelInvoiceResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.CancelInvoiceResp").msgclass
AddHoldInvoiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.AddHoldInvoiceRequest").msgclass
AddHoldInvoiceResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.AddHoldInvoiceResp").msgclass
SettleInvoiceMsg = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.SettleInvoiceMsg").msgclass
SettleInvoiceResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.SettleInvoiceResp").msgclass
SubscribeSingleInvoiceRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("invoicesrpc.SubscribeSingleInvoiceRequest").msgclass
end

View File

@@ -0,0 +1,41 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: invoicesrpc/invoices.proto for package 'invoicesrpc'
require 'grpc'
require 'invoicesrpc/invoices_pb'
module Invoicesrpc
module Invoices
# Invoices is a service that can be used to create, accept, settle and cancel
# invoices.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'invoicesrpc.Invoices'
#
# SubscribeSingleInvoice returns a uni-directional stream (server -> client)
# to notify the client of state transitions of the specified invoice.
# Initially the current invoice state is always sent out.
rpc :SubscribeSingleInvoice, SubscribeSingleInvoiceRequest, stream(Lnrpc::Invoice)
#
# CancelInvoice cancels a currently open invoice. If the invoice is already
# canceled, this call will succeed. If the invoice is already settled, it will
# fail.
rpc :CancelInvoice, CancelInvoiceMsg, CancelInvoiceResp
#
# AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
# supplied in the request.
rpc :AddHoldInvoice, AddHoldInvoiceRequest, AddHoldInvoiceResp
#
# SettleInvoice settles an accepted invoice. If the invoice is already
# settled, this call will succeed.
rpc :SettleInvoice, SettleInvoiceMsg, SettleInvoiceResp
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,18 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: lnclipb/lncli.proto
require 'google/protobuf'
require 'verrpc/verrpc_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("lnclipb/lncli.proto", :syntax => :proto3) do
add_message "lnclipb.VersionResponse" do
optional :lncli, :message, 1, "verrpc.Version"
optional :lnd, :message, 2, "verrpc.Version"
end
end
end
module Lnclipb
VersionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnclipb.VersionResponse").msgclass
end

View File

@@ -0,0 +1,229 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: routerrpc/router.proto
require 'google/protobuf'
require 'rpc_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("routerrpc/router.proto", :syntax => :proto3) do
add_message "routerrpc.SendPaymentRequest" do
optional :dest, :bytes, 1
optional :amt, :int64, 2
optional :amt_msat, :int64, 12
optional :payment_hash, :bytes, 3
optional :final_cltv_delta, :int32, 4
optional :payment_request, :string, 5
optional :timeout_seconds, :int32, 6
optional :fee_limit_sat, :int64, 7
optional :fee_limit_msat, :int64, 13
optional :outgoing_chan_id, :uint64, 8
repeated :outgoing_chan_ids, :uint64, 19
optional :last_hop_pubkey, :bytes, 14
optional :cltv_limit, :int32, 9
repeated :route_hints, :message, 10, "lnrpc.RouteHint"
map :dest_custom_records, :uint64, :bytes, 11
optional :allow_self_payment, :bool, 15
repeated :dest_features, :enum, 16, "lnrpc.FeatureBit"
optional :max_parts, :uint32, 17
optional :no_inflight_updates, :bool, 18
end
add_message "routerrpc.TrackPaymentRequest" do
optional :payment_hash, :bytes, 1
optional :no_inflight_updates, :bool, 2
end
add_message "routerrpc.RouteFeeRequest" do
optional :dest, :bytes, 1
optional :amt_sat, :int64, 2
end
add_message "routerrpc.RouteFeeResponse" do
optional :routing_fee_msat, :int64, 1
optional :time_lock_delay, :int64, 2
end
add_message "routerrpc.SendToRouteRequest" do
optional :payment_hash, :bytes, 1
optional :route, :message, 2, "lnrpc.Route"
end
add_message "routerrpc.SendToRouteResponse" do
optional :preimage, :bytes, 1
optional :failure, :message, 2, "lnrpc.Failure"
end
add_message "routerrpc.ResetMissionControlRequest" do
end
add_message "routerrpc.ResetMissionControlResponse" do
end
add_message "routerrpc.QueryMissionControlRequest" do
end
add_message "routerrpc.QueryMissionControlResponse" do
repeated :pairs, :message, 2, "routerrpc.PairHistory"
end
add_message "routerrpc.PairHistory" do
optional :node_from, :bytes, 1
optional :node_to, :bytes, 2
optional :history, :message, 7, "routerrpc.PairData"
end
add_message "routerrpc.PairData" do
optional :fail_time, :int64, 1
optional :fail_amt_sat, :int64, 2
optional :fail_amt_msat, :int64, 4
optional :success_time, :int64, 5
optional :success_amt_sat, :int64, 6
optional :success_amt_msat, :int64, 7
end
add_message "routerrpc.QueryProbabilityRequest" do
optional :from_node, :bytes, 1
optional :to_node, :bytes, 2
optional :amt_msat, :int64, 3
end
add_message "routerrpc.QueryProbabilityResponse" do
optional :probability, :double, 1
optional :history, :message, 2, "routerrpc.PairData"
end
add_message "routerrpc.BuildRouteRequest" do
optional :amt_msat, :int64, 1
optional :final_cltv_delta, :int32, 2
optional :outgoing_chan_id, :uint64, 3
repeated :hop_pubkeys, :bytes, 4
end
add_message "routerrpc.BuildRouteResponse" do
optional :route, :message, 1, "lnrpc.Route"
end
add_message "routerrpc.SubscribeHtlcEventsRequest" do
end
add_message "routerrpc.HtlcEvent" do
optional :incoming_channel_id, :uint64, 1
optional :outgoing_channel_id, :uint64, 2
optional :incoming_htlc_id, :uint64, 3
optional :outgoing_htlc_id, :uint64, 4
optional :timestamp_ns, :uint64, 5
optional :event_type, :enum, 6, "routerrpc.HtlcEvent.EventType"
oneof :event do
optional :forward_event, :message, 7, "routerrpc.ForwardEvent"
optional :forward_fail_event, :message, 8, "routerrpc.ForwardFailEvent"
optional :settle_event, :message, 9, "routerrpc.SettleEvent"
optional :link_fail_event, :message, 10, "routerrpc.LinkFailEvent"
end
end
add_enum "routerrpc.HtlcEvent.EventType" do
value :UNKNOWN, 0
value :SEND, 1
value :RECEIVE, 2
value :FORWARD, 3
end
add_message "routerrpc.HtlcInfo" do
optional :incoming_timelock, :uint32, 1
optional :outgoing_timelock, :uint32, 2
optional :incoming_amt_msat, :uint64, 3
optional :outgoing_amt_msat, :uint64, 4
end
add_message "routerrpc.ForwardEvent" do
optional :info, :message, 1, "routerrpc.HtlcInfo"
end
add_message "routerrpc.ForwardFailEvent" do
end
add_message "routerrpc.SettleEvent" do
end
add_message "routerrpc.LinkFailEvent" do
optional :info, :message, 1, "routerrpc.HtlcInfo"
optional :wire_failure, :enum, 2, "lnrpc.Failure.FailureCode"
optional :failure_detail, :enum, 3, "routerrpc.FailureDetail"
optional :failure_string, :string, 4
end
add_message "routerrpc.PaymentStatus" do
optional :state, :enum, 1, "routerrpc.PaymentState"
optional :preimage, :bytes, 2
repeated :htlcs, :message, 4, "lnrpc.HTLCAttempt"
end
add_message "routerrpc.CircuitKey" do
optional :chan_id, :uint64, 1
optional :htlc_id, :uint64, 2
end
add_message "routerrpc.ForwardHtlcInterceptRequest" do
optional :incoming_circuit_key, :message, 1, "routerrpc.CircuitKey"
optional :incoming_amount_msat, :uint64, 5
optional :incoming_expiry, :uint32, 6
optional :payment_hash, :bytes, 2
optional :outgoing_requested_chan_id, :uint64, 7
optional :outgoing_amount_msat, :uint64, 3
optional :outgoing_expiry, :uint32, 4
map :custom_records, :uint64, :bytes, 8
end
add_message "routerrpc.ForwardHtlcInterceptResponse" do
optional :incoming_circuit_key, :message, 1, "routerrpc.CircuitKey"
optional :action, :enum, 2, "routerrpc.ResolveHoldForwardAction"
optional :preimage, :bytes, 3
end
add_enum "routerrpc.FailureDetail" do
value :UNKNOWN, 0
value :NO_DETAIL, 1
value :ONION_DECODE, 2
value :LINK_NOT_ELIGIBLE, 3
value :ON_CHAIN_TIMEOUT, 4
value :HTLC_EXCEEDS_MAX, 5
value :INSUFFICIENT_BALANCE, 6
value :INCOMPLETE_FORWARD, 7
value :HTLC_ADD_FAILED, 8
value :FORWARDS_DISABLED, 9
value :INVOICE_CANCELED, 10
value :INVOICE_UNDERPAID, 11
value :INVOICE_EXPIRY_TOO_SOON, 12
value :INVOICE_NOT_OPEN, 13
value :MPP_INVOICE_TIMEOUT, 14
value :ADDRESS_MISMATCH, 15
value :SET_TOTAL_MISMATCH, 16
value :SET_TOTAL_TOO_LOW, 17
value :SET_OVERPAID, 18
value :UNKNOWN_INVOICE, 19
value :INVALID_KEYSEND, 20
value :MPP_IN_PROGRESS, 21
value :CIRCULAR_ROUTE, 22
end
add_enum "routerrpc.PaymentState" do
value :IN_FLIGHT, 0
value :SUCCEEDED, 1
value :FAILED_TIMEOUT, 2
value :FAILED_NO_ROUTE, 3
value :FAILED_ERROR, 4
value :FAILED_INCORRECT_PAYMENT_DETAILS, 5
value :FAILED_INSUFFICIENT_BALANCE, 6
end
add_enum "routerrpc.ResolveHoldForwardAction" do
value :SETTLE, 0
value :FAIL, 1
value :RESUME, 2
end
end
end
module Routerrpc
SendPaymentRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.SendPaymentRequest").msgclass
TrackPaymentRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.TrackPaymentRequest").msgclass
RouteFeeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.RouteFeeRequest").msgclass
RouteFeeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.RouteFeeResponse").msgclass
SendToRouteRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.SendToRouteRequest").msgclass
SendToRouteResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.SendToRouteResponse").msgclass
ResetMissionControlRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ResetMissionControlRequest").msgclass
ResetMissionControlResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ResetMissionControlResponse").msgclass
QueryMissionControlRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.QueryMissionControlRequest").msgclass
QueryMissionControlResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.QueryMissionControlResponse").msgclass
PairHistory = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.PairHistory").msgclass
PairData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.PairData").msgclass
QueryProbabilityRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.QueryProbabilityRequest").msgclass
QueryProbabilityResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.QueryProbabilityResponse").msgclass
BuildRouteRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.BuildRouteRequest").msgclass
BuildRouteResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.BuildRouteResponse").msgclass
SubscribeHtlcEventsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.SubscribeHtlcEventsRequest").msgclass
HtlcEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.HtlcEvent").msgclass
HtlcEvent::EventType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.HtlcEvent.EventType").enummodule
HtlcInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.HtlcInfo").msgclass
ForwardEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ForwardEvent").msgclass
ForwardFailEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ForwardFailEvent").msgclass
SettleEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.SettleEvent").msgclass
LinkFailEvent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.LinkFailEvent").msgclass
PaymentStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.PaymentStatus").msgclass
CircuitKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.CircuitKey").msgclass
ForwardHtlcInterceptRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ForwardHtlcInterceptRequest").msgclass
ForwardHtlcInterceptResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ForwardHtlcInterceptResponse").msgclass
FailureDetail = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.FailureDetail").enummodule
PaymentState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.PaymentState").enummodule
ResolveHoldForwardAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("routerrpc.ResolveHoldForwardAction").enummodule
end

View File

@@ -0,0 +1,86 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: routerrpc/router.proto for package 'routerrpc'
require 'grpc'
require 'routerrpc/router_pb'
module Routerrpc
module Router
# Router is a service that offers advanced interaction with the router
# subsystem of the daemon.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'routerrpc.Router'
#
# SendPaymentV2 attempts to route a payment described by the passed
# PaymentRequest to the final destination. The call returns a stream of
# payment updates.
rpc :SendPaymentV2, SendPaymentRequest, stream(Lnrpc::Payment)
#
# TrackPaymentV2 returns an update stream for the payment identified by the
# payment hash.
rpc :TrackPaymentV2, TrackPaymentRequest, stream(Lnrpc::Payment)
#
# EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
# may cost to send an HTLC to the target end destination.
rpc :EstimateRouteFee, RouteFeeRequest, RouteFeeResponse
#
# Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
# the specified route. This method differs from SendPayment in that it
# allows users to specify a full route manually. This can be used for
# things like rebalancing, and atomic swaps. It differs from the newer
# SendToRouteV2 in that it doesn't return the full HTLC information.
rpc :SendToRoute, SendToRouteRequest, SendToRouteResponse
#
# SendToRouteV2 attempts to make a payment via the specified route. This
# method differs from SendPayment in that it allows users to specify a full
# route manually. This can be used for things like rebalancing, and atomic
# swaps.
rpc :SendToRouteV2, SendToRouteRequest, Lnrpc::HTLCAttempt
#
# ResetMissionControl clears all mission control state and starts with a clean
# slate.
rpc :ResetMissionControl, ResetMissionControlRequest, ResetMissionControlResponse
#
# QueryMissionControl exposes the internal mission control state to callers.
# It is a development feature.
rpc :QueryMissionControl, QueryMissionControlRequest, QueryMissionControlResponse
#
# QueryProbability returns the current success probability estimate for a
# given node pair and amount.
rpc :QueryProbability, QueryProbabilityRequest, QueryProbabilityResponse
#
# BuildRoute builds a fully specified route based on a list of hop public
# keys. It retrieves the relevant channel policies from the graph in order to
# calculate the correct fees and time locks.
rpc :BuildRoute, BuildRouteRequest, BuildRouteResponse
#
# SubscribeHtlcEvents creates a uni-directional stream from the server to
# the client which delivers a stream of htlc events.
rpc :SubscribeHtlcEvents, SubscribeHtlcEventsRequest, stream(HtlcEvent)
#
# Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
# described by the passed PaymentRequest to the final destination. The call
# returns a stream of payment status updates.
rpc :SendPayment, SendPaymentRequest, stream(PaymentStatus)
#
# Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
# the payment identified by the payment hash.
rpc :TrackPayment, TrackPaymentRequest, stream(PaymentStatus)
# *
# HtlcInterceptor dispatches a bi-directional streaming RPC in which
# Forwarded HTLC requests are sent to the client and the client responds with
# a boolean that tells LND if this htlc should be intercepted.
# In case of interception, the htlc can be either settled, cancelled or
# resumed later by using the ResolveHoldForward endpoint.
rpc :HtlcInterceptor, stream(ForwardHtlcInterceptResponse), stream(ForwardHtlcInterceptRequest)
end
Stub = Service.rpc_stub_class
end
end

1265
lib/grpc_services/rpc_pb.rb Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,19 +2,15 @@
# Source: rpc.proto for package 'lnrpc'
require 'grpc'
require_relative 'rpc_pb'
require 'rpc_pb'
module Lnrpc
module WalletUnlocker
# *
module Lightning
#
# Comments in this file will be directly parsed into the API
# Documentation as descriptions of the associated method, message, or field.
# These descriptions should go right above the definition of the object, and
# can be in either block or /// comment format.
#
# One edge case exists where a // comment followed by a /// comment in the
# next line will cause the description not to show up in the documentation. In
# that instance, simply separate the two comments with a blank line.
# can be in either block or // comment format.
#
# An RPC method can be matched to an lncli command by placing a line in the
# beginning of the description in exactly the following format:
@@ -27,53 +23,7 @@ module Lnrpc
# this proto file can be found here:
# https://github.com/lightninglabs/lightning-api
#
# The WalletUnlocker service is used to set up a wallet password for
# lnd at first startup, and unlock a previously set up wallet.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'lnrpc.WalletUnlocker'
# *
# GenSeed is the first method that should be used to instantiate a new lnd
# instance. This method allows a caller to generate a new aezeed cipher seed
# given an optional passphrase. If provided, the passphrase will be necessary
# to decrypt the cipherseed to expose the internal wallet seed.
#
# Once the cipherseed is obtained and verified by the user, the InitWallet
# method should be used to commit the newly generated seed, and create the
# wallet.
rpc :GenSeed, GenSeedRequest, GenSeedResponse
# *
# InitWallet is used when lnd is starting up for the first time to fully
# initialize the daemon and its internal wallet. At the very least a wallet
# password must be provided. This will be used to encrypt sensitive material
# on disk.
#
# In the case of a recovery scenario, the user can also specify their aezeed
# mnemonic and passphrase. If set, then the daemon will use this prior state
# to initialize its internal wallet.
#
# Alternatively, this can be used along with the GenSeed RPC to obtain a
# seed, then present it to the user. Once it has been verified by the user,
# the seed can be fed into this RPC in order to commit the new wallet.
rpc :InitWallet, InitWalletRequest, InitWalletResponse
# * lncli: `unlock`
# UnlockWallet is used at startup of lnd to provide a password to unlock
# the wallet database.
rpc :UnlockWallet, UnlockWalletRequest, UnlockWalletResponse
# * lncli: `changepassword`
# ChangePassword changes the password of the encrypted wallet. This will
# automatically unlock the wallet database if successful.
rpc :ChangePassword, ChangePasswordRequest, ChangePasswordResponse
end
Stub = Service.rpc_stub_class
end
module Lightning
# Lightning is the main RPC server of the daemon.
class Service
include GRPC::GenericService
@@ -82,113 +32,150 @@ module Lnrpc
self.unmarshal_class_method = :decode
self.service_name = 'lnrpc.Lightning'
# * lncli: `walletbalance`
# lncli: `walletbalance`
# WalletBalance returns total unspent outputs(confirmed and unconfirmed), all
# confirmed unspent outputs and all unconfirmed unspent outputs under control
# of the wallet.
rpc :WalletBalance, WalletBalanceRequest, WalletBalanceResponse
# * lncli: `channelbalance`
# lncli: `channelbalance`
# ChannelBalance returns the total funds available across all open channels
# in satoshis.
rpc :ChannelBalance, ChannelBalanceRequest, ChannelBalanceResponse
# * lncli: `listchaintxns`
# lncli: `listchaintxns`
# GetTransactions returns a list describing all the known transactions
# relevant to the wallet.
rpc :GetTransactions, GetTransactionsRequest, TransactionDetails
# * lncli: `estimatefee`
# lncli: `estimatefee`
# EstimateFee asks the chain backend to estimate the fee rate and total fees
# for a transaction that pays to multiple specified outputs.
#
# When using REST, the `AddrToAmount` map type can be set by appending
# `&AddrToAmount[<address>]=<amount_to_send>` to the URL. Unfortunately this
# map type doesn't appear in the REST API documentation because of a bug in
# the grpc-gateway library.
rpc :EstimateFee, EstimateFeeRequest, EstimateFeeResponse
# * lncli: `sendcoins`
# lncli: `sendcoins`
# SendCoins executes a request to send coins to a particular address. Unlike
# SendMany, this RPC call only allows creating a single output at a time. If
# neither target_conf, or sat_per_byte are set, then the internal wallet will
# consult its fee model to determine a fee for the default confirmation
# target.
rpc :SendCoins, SendCoinsRequest, SendCoinsResponse
# * lncli: `listunspent`
# lncli: `listunspent`
# Deprecated, use walletrpc.ListUnspent instead.
#
# ListUnspent returns a list of all utxos spendable by the wallet with a
# number of confirmations between the specified minimum and maximum.
rpc :ListUnspent, ListUnspentRequest, ListUnspentResponse
# *
#
# SubscribeTransactions creates a uni-directional stream from the server to
# the client in which any newly discovered transactions relevant to the
# wallet are sent over.
rpc :SubscribeTransactions, GetTransactionsRequest, stream(Transaction)
# * lncli: `sendmany`
# lncli: `sendmany`
# SendMany handles a request for a transaction that creates multiple specified
# outputs in parallel. If neither target_conf, or sat_per_byte are set, then
# the internal wallet will consult its fee model to determine a fee for the
# default confirmation target.
rpc :SendMany, SendManyRequest, SendManyResponse
# * lncli: `newaddress`
# lncli: `newaddress`
# NewAddress creates a new address under control of the local wallet.
rpc :NewAddress, NewAddressRequest, NewAddressResponse
# * lncli: `signmessage`
# lncli: `signmessage`
# SignMessage signs a message with this node's private key. The returned
# signature string is `zbase32` encoded and pubkey recoverable, meaning that
# only the message digest and signature are needed for verification.
rpc :SignMessage, SignMessageRequest, SignMessageResponse
# * lncli: `verifymessage`
# lncli: `verifymessage`
# VerifyMessage verifies a signature over a msg. The signature must be
# zbase32 encoded and signed by an active node in the resident node's
# channel database. In addition to returning the validity of the signature,
# VerifyMessage also returns the recovered pubkey from the signature.
rpc :VerifyMessage, VerifyMessageRequest, VerifyMessageResponse
# * lncli: `connect`
# lncli: `connect`
# ConnectPeer attempts to establish a connection to a remote peer. This is at
# the networking level, and is used for communication between nodes. This is
# distinct from establishing a channel with a peer.
rpc :ConnectPeer, ConnectPeerRequest, ConnectPeerResponse
# * lncli: `disconnect`
# lncli: `disconnect`
# DisconnectPeer attempts to disconnect one peer from another identified by a
# given pubKey. In the case that we currently have a pending or active channel
# with the target peer, then this action will be not be allowed.
rpc :DisconnectPeer, DisconnectPeerRequest, DisconnectPeerResponse
# * lncli: `listpeers`
# lncli: `listpeers`
# ListPeers returns a verbose listing of all currently active peers.
rpc :ListPeers, ListPeersRequest, ListPeersResponse
# * lncli: `getinfo`
#
# SubscribePeerEvents creates a uni-directional stream from the server to
# the client in which any events relevant to the state of peers are sent
# over. Events include peers going online and offline.
rpc :SubscribePeerEvents, PeerEventSubscription, stream(PeerEvent)
# lncli: `getinfo`
# GetInfo returns general information concerning the lightning node including
# it's identity pubkey, alias, the chains it is connected to, and information
# concerning the number of open+pending channels.
rpc :GetInfo, GetInfoRequest, GetInfoResponse
# * lncli: `getrecoveryinfo`
# GetRecoveryInfo returns information concerning the recovery mode including
# whether it's in a recovery mode, whether the recovery is finished, and the
# progress made so far.
rpc :GetRecoveryInfo, GetRecoveryInfoRequest, GetRecoveryInfoResponse
# TODO(roasbeef): merge with below with bool?
#
# * lncli: `pendingchannels`
# lncli: `pendingchannels`
# PendingChannels returns a list of all the channels that are currently
# considered "pending". A channel is pending if it has finished the funding
# workflow and is waiting for confirmations for the funding txn, or is in the
# process of closure, either initiated cooperatively or non-cooperatively.
rpc :PendingChannels, PendingChannelsRequest, PendingChannelsResponse
# * lncli: `listchannels`
# lncli: `listchannels`
# ListChannels returns a description of all the open channels that this node
# is a participant in.
rpc :ListChannels, ListChannelsRequest, ListChannelsResponse
# * lncli: `subscribechannelevents`
#
# SubscribeChannelEvents creates a uni-directional stream from the server to
# the client in which any updates relevant to the state of the channels are
# sent over. Events include new active channels, inactive channels, and closed
# channels.
rpc :SubscribeChannelEvents, ChannelEventSubscription, stream(ChannelEventUpdate)
# * lncli: `closedchannels`
# lncli: `closedchannels`
# ClosedChannels returns a description of all the closed channels that
# this node was a participant in.
rpc :ClosedChannels, ClosedChannelsRequest, ClosedChannelsResponse
# *
#
# OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
# call is meant to be consumed by clients to the REST proxy. As with all
# other sync calls, all byte slices are intended to be populated as hex
# encoded strings.
rpc :OpenChannelSync, OpenChannelRequest, ChannelPoint
# * lncli: `openchannel`
# lncli: `openchannel`
# OpenChannel attempts to open a singly funded channel specified in the
# request to a remote peer. Users are able to specify a target number of
# blocks that the funding transaction should be confirmed in, or a manual fee
# rate to us for the funding transaction. If neither are specified, then a
# lax block confirmation target is used.
# lax block confirmation target is used. Each OpenStatusUpdate will return
# the pending channel ID of the in-progress channel. Depending on the
# arguments specified in the OpenChannelRequest, this pending channel ID can
# then be used to manually progress the channel funding flow.
rpc :OpenChannel, OpenChannelRequest, stream(OpenStatusUpdate)
# * lncli: `closechannel`
#
# FundingStateStep is an advanced funding related call that allows the caller
# to either execute some preparatory steps for a funding workflow, or
# manually progress a funding workflow. The primary way a funding flow is
# identified is via its pending channel ID. As an example, this method can be
# used to specify that we're expecting a funding flow for a particular
# pending channel ID, for which we need to use specific parameters.
# Alternatively, this can be used to interactively drive PSBT signing for
# funding for partially complete funding transactions.
rpc :FundingStateStep, FundingTransitionMsg, FundingStateStepResp
#
# ChannelAcceptor dispatches a bi-directional streaming RPC in which
# OpenChannel requests are sent to the client and the client responds with
# a boolean that tells LND whether or not to accept the channel. This allows
# node operators to specify their own criteria for accepting inbound channels
# through a single persistent connection.
rpc :ChannelAcceptor, stream(ChannelAcceptResponse), stream(ChannelAcceptRequest)
# lncli: `closechannel`
# CloseChannel attempts to close an active channel identified by its channel
# outpoint (ChannelPoint). The actions of this method can additionally be
# augmented to attempt a force close after a timeout period in the case of an
@@ -197,40 +184,42 @@ module Lnrpc
# closure transaction is confirmed, or a manual fee rate. If neither are
# specified, then a default lax, block confirmation target is used.
rpc :CloseChannel, CloseChannelRequest, stream(CloseStatusUpdate)
# * lncli: `abandonchannel`
# lncli: `abandonchannel`
# AbandonChannel removes all channel state from the database except for a
# close summary. This method can be used to get rid of permanently unusable
# channels due to bugs fixed in newer versions of lnd. Only available
# when in debug builds of lnd.
rpc :AbandonChannel, AbandonChannelRequest, AbandonChannelResponse
# * lncli: `sendpayment`
# SendPayment dispatches a bi-directional streaming RPC for sending payments
# through the Lightning Network. A single RPC invocation creates a persistent
# bi-directional stream allowing clients to rapidly send payments through the
# Lightning Network with a single persistent connection.
# lncli: `sendpayment`
# Deprecated, use routerrpc.SendPaymentV2. SendPayment dispatches a
# bi-directional streaming RPC for sending payments through the Lightning
# Network. A single RPC invocation creates a persistent bi-directional
# stream allowing clients to rapidly send payments through the Lightning
# Network with a single persistent connection.
rpc :SendPayment, stream(SendRequest), stream(SendResponse)
# *
#
# SendPaymentSync is the synchronous non-streaming version of SendPayment.
# This RPC is intended to be consumed by clients of the REST proxy.
# Additionally, this RPC expects the destination's public key and the payment
# hash (if any) to be encoded as hex strings.
rpc :SendPaymentSync, SendRequest, SendResponse
# * lncli: `sendtoroute`
# SendToRoute is a bi-directional streaming RPC for sending payment through
# the Lightning Network. This method differs from SendPayment in that it
# allows users to specify a full route manually. This can be used for things
# like rebalancing, and atomic swaps.
# lncli: `sendtoroute`
# Deprecated, use routerrpc.SendToRouteV2. SendToRoute is a bi-directional
# streaming RPC for sending payment through the Lightning Network. This
# method differs from SendPayment in that it allows users to specify a full
# route manually. This can be used for things like rebalancing, and atomic
# swaps.
rpc :SendToRoute, stream(SendToRouteRequest), stream(SendResponse)
# *
#
# SendToRouteSync is a synchronous version of SendToRoute. It Will block
# until the payment either fails or succeeds.
rpc :SendToRouteSync, SendToRouteRequest, SendResponse
# * lncli: `addinvoice`
# lncli: `addinvoice`
# AddInvoice attempts to add a new invoice to the invoice database. Any
# duplicated invoices are rejected, therefore all invoices *must* have a
# unique payment preimage.
rpc :AddInvoice, Invoice, AddInvoiceResponse
# * lncli: `listinvoices`
# lncli: `listinvoices`
# ListInvoices returns a list of all the invoices currently stored within the
# database. Any active debug invoices are ignored. It has full support for
# paginated responses, allowing users to query for specific invoices through
@@ -239,67 +228,76 @@ module Lnrpc
# next request. By default, the first 100 invoices created will be returned.
# Backwards pagination is also supported through the Reversed flag.
rpc :ListInvoices, ListInvoiceRequest, ListInvoiceResponse
# * lncli: `lookupinvoice`
# lncli: `lookupinvoice`
# LookupInvoice attempts to look up an invoice according to its payment hash.
# The passed payment hash *must* be exactly 32 bytes, if not, an error is
# returned.
rpc :LookupInvoice, PaymentHash, Invoice
# *
#
# SubscribeInvoices returns a uni-directional stream (server -> client) for
# notifying the client of newly added/settled invoices. The caller can
# optionally specify the add_index and/or the settle_index. If the add_index
# is specified, then we'll first start by sending add invoice events for all
# invoices with an add_index greater than the specified value. If the
# invoices with an add_index greater than the specified value. If the
# settle_index is specified, the next, we'll send out all settle events for
# invoices with a settle_index greater than the specified value. One or both
# invoices with a settle_index greater than the specified value. One or both
# of these fields can be set. If no fields are set, then we'll only send out
# the latest add/settle events.
rpc :SubscribeInvoices, InvoiceSubscription, stream(Invoice)
# * lncli: `decodepayreq`
# lncli: `decodepayreq`
# DecodePayReq takes an encoded payment request string and attempts to decode
# it, returning a full description of the conditions encoded within the
# payment request.
rpc :DecodePayReq, PayReqString, PayReq
# * lncli: `listpayments`
# lncli: `listpayments`
# ListPayments returns a list of all outgoing payments.
rpc :ListPayments, ListPaymentsRequest, ListPaymentsResponse
# *
#
# DeleteAllPayments deletes all outgoing payments from DB.
rpc :DeleteAllPayments, DeleteAllPaymentsRequest, DeleteAllPaymentsResponse
# * lncli: `describegraph`
# lncli: `describegraph`
# DescribeGraph returns a description of the latest graph state from the
# point of view of the node. The graph information is partitioned into two
# components: all the nodes/vertexes, and all the edges that connect the
# vertexes themselves. As this is a directed graph, the edges also contain
# vertexes themselves. As this is a directed graph, the edges also contain
# the node directional specific routing policy which includes: the time lock
# delta, fee information, etc.
rpc :DescribeGraph, ChannelGraphRequest, ChannelGraph
# * lncli: `getchaninfo`
# lncli: `getnodemetrics`
# GetNodeMetrics returns node metrics calculated from the graph. Currently
# the only supported metric is betweenness centrality of individual nodes.
rpc :GetNodeMetrics, NodeMetricsRequest, NodeMetricsResponse
# lncli: `getchaninfo`
# GetChanInfo returns the latest authenticated network announcement for the
# given channel identified by its channel ID: an 8-byte integer which
# uniquely identifies the location of transaction's funding output within the
# blockchain.
rpc :GetChanInfo, ChanInfoRequest, ChannelEdge
# * lncli: `getnodeinfo`
# lncli: `getnodeinfo`
# GetNodeInfo returns the latest advertised, aggregated, and authenticated
# channel information for the specified node identified by its public key.
rpc :GetNodeInfo, NodeInfoRequest, NodeInfo
# * lncli: `queryroutes`
# lncli: `queryroutes`
# QueryRoutes attempts to query the daemon's Channel Router for a possible
# route to a target destination capable of carrying a specific amount of
# satoshis. The returned route contains the full details required to craft and
# send an HTLC, also including the necessary information that should be
# present within the Sphinx packet encapsulated within the HTLC.
#
# When using REST, the `dest_custom_records` map type can be set by appending
# `&dest_custom_records[<record_number>]=<record_data_base64_url_encoded>`
# to the URL. Unfortunately this map type doesn't appear in the REST API
# documentation because of a bug in the grpc-gateway library.
rpc :QueryRoutes, QueryRoutesRequest, QueryRoutesResponse
# * lncli: `getnetworkinfo`
# lncli: `getnetworkinfo`
# GetNetworkInfo returns some basic stats about the known channel graph from
# the point of view of the node.
rpc :GetNetworkInfo, NetworkInfoRequest, NetworkInfo
# * lncli: `stop`
# lncli: `stop`
# StopDaemon will send a shutdown request to the interrupt handler, triggering
# a graceful shutdown of the daemon.
rpc :StopDaemon, StopRequest, StopResponse
# *
#
# SubscribeChannelGraph launches a streaming RPC that allows the caller to
# receive notifications upon any changes to the channel graph topology from
# the point of view of the responding node. Events notified include: new
@@ -307,21 +305,21 @@ module Lnrpc
# channels being advertised, updates in the routing policy for a directional
# channel edge, and when channels are closed on-chain.
rpc :SubscribeChannelGraph, GraphTopologySubscription, stream(GraphTopologyUpdate)
# * lncli: `debuglevel`
# lncli: `debuglevel`
# DebugLevel allows a caller to programmatically set the logging verbosity of
# lnd. The logging can be targeted according to a coarse daemon-wide logging
# level, or in a granular fashion to specify the logging for a target
# sub-system.
rpc :DebugLevel, DebugLevelRequest, DebugLevelResponse
# * lncli: `feereport`
# lncli: `feereport`
# FeeReport allows the caller to obtain a report detailing the current fee
# schedule enforced by the node globally for each channel.
rpc :FeeReport, FeeReportRequest, FeeReportResponse
# * lncli: `updatechanpolicy`
# lncli: `updatechanpolicy`
# UpdateChannelPolicy allows the caller to update the fee schedule and
# channel policies for all channels globally, or a particular channel.
rpc :UpdateChannelPolicy, PolicyUpdateRequest, PolicyUpdateResponse
# * lncli: `fwdinghistory`
# lncli: `fwdinghistory`
# ForwardingHistory allows the caller to query the htlcswitch for a record of
# all HTLCs forwarded within the target time range, and integer offset
# within that time range. If no time-range is specified, then the first chunk
@@ -329,11 +327,11 @@ module Lnrpc
#
# A list of forwarding events are returned. The size of each forwarding event
# is 40 bytes, and the max message size able to be returned in gRPC is 4 MiB.
# As a result each message can only contain 50k entries. Each response has
# As a result each message can only contain 50k entries. Each response has
# the index offset of the last entry. The index offset can be provided to the
# request to allow the caller to skip a series of records.
rpc :ForwardingHistory, ForwardingHistoryRequest, ForwardingHistoryResponse
# * lncli: `exportchanbackup`
# lncli: `exportchanbackup`
# ExportChannelBackup attempts to return an encrypted static channel backup
# for the target channel identified by it channel point. The backup is
# encrypted with a key generated from the aezeed seed of the user. The
@@ -341,25 +339,25 @@ module Lnrpc
# method once lnd is running, or via the InitWallet and UnlockWallet methods
# from the WalletUnlocker service.
rpc :ExportChannelBackup, ExportChannelBackupRequest, ChannelBackup
# *
#
# ExportAllChannelBackups returns static channel backups for all existing
# channels known to lnd. A set of regular singular static channel backups for
# each channel are returned. Additionally, a multi-channel backup is returned
# as well, which contains a single encrypted blob containing the backups of
# each channel.
rpc :ExportAllChannelBackups, ChanBackupExportRequest, ChanBackupSnapshot
# *
#
# VerifyChanBackup allows a caller to verify the integrity of a channel backup
# snapshot. This method will accept either a packed Single or a packed Multi.
# Specifying both will result in an error.
rpc :VerifyChanBackup, ChanBackupSnapshot, VerifyChanBackupResponse
# * lncli: `restorechanbackup`
# lncli: `restorechanbackup`
# RestoreChannelBackups accepts a set of singular channel backups, or a
# single encrypted multi-chan backup and attempts to recover any funds
# remaining within the channel. If we are able to unpack the backup, then the
# new channel will be shown under listchannels, as well as pending channels.
rpc :RestoreChannelBackups, RestoreChanBackupRequest, RestoreBackupResponse
# *
#
# SubscribeChannelBackups allows a client to sub-subscribe to the most up to
# date information concerning the state of all channel backups. Each time a
# new channel is added, we return the new set of channels, along with a
@@ -368,6 +366,11 @@ module Lnrpc
# ups, but the updated set of encrypted multi-chan backups with the closed
# channel(s) removed.
rpc :SubscribeChannelBackups, ChannelBackupSubscription, stream(ChanBackupSnapshot)
# lncli: `bakemacaroon`
# BakeMacaroon allows the creation of a new macaroon with custom read and
# write permissions. No first-party caveats are added since this can be done
# offline.
rpc :BakeMacaroon, BakeMacaroonRequest, BakeMacaroonResponse
end
Stub = Service.rpc_stub_class

View File

@@ -0,0 +1,83 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: signrpc/signer.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("signrpc/signer.proto", :syntax => :proto3) do
add_message "signrpc.KeyLocator" do
optional :key_family, :int32, 1
optional :key_index, :int32, 2
end
add_message "signrpc.KeyDescriptor" do
optional :raw_key_bytes, :bytes, 1
optional :key_loc, :message, 2, "signrpc.KeyLocator"
end
add_message "signrpc.TxOut" do
optional :value, :int64, 1
optional :pk_script, :bytes, 2
end
add_message "signrpc.SignDescriptor" do
optional :key_desc, :message, 1, "signrpc.KeyDescriptor"
optional :single_tweak, :bytes, 2
optional :double_tweak, :bytes, 3
optional :witness_script, :bytes, 4
optional :output, :message, 5, "signrpc.TxOut"
optional :sighash, :uint32, 7
optional :input_index, :int32, 8
end
add_message "signrpc.SignReq" do
optional :raw_tx_bytes, :bytes, 1
repeated :sign_descs, :message, 2, "signrpc.SignDescriptor"
end
add_message "signrpc.SignResp" do
repeated :raw_sigs, :bytes, 1
end
add_message "signrpc.InputScript" do
repeated :witness, :bytes, 1
optional :sig_script, :bytes, 2
end
add_message "signrpc.InputScriptResp" do
repeated :input_scripts, :message, 1, "signrpc.InputScript"
end
add_message "signrpc.SignMessageReq" do
optional :msg, :bytes, 1
optional :key_loc, :message, 2, "signrpc.KeyLocator"
end
add_message "signrpc.SignMessageResp" do
optional :signature, :bytes, 1
end
add_message "signrpc.VerifyMessageReq" do
optional :msg, :bytes, 1
optional :signature, :bytes, 2
optional :pubkey, :bytes, 3
end
add_message "signrpc.VerifyMessageResp" do
optional :valid, :bool, 1
end
add_message "signrpc.SharedKeyRequest" do
optional :ephemeral_pubkey, :bytes, 1
optional :key_loc, :message, 2, "signrpc.KeyLocator"
end
add_message "signrpc.SharedKeyResponse" do
optional :shared_key, :bytes, 1
end
end
end
module Signrpc
KeyLocator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.KeyLocator").msgclass
KeyDescriptor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.KeyDescriptor").msgclass
TxOut = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.TxOut").msgclass
SignDescriptor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SignDescriptor").msgclass
SignReq = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SignReq").msgclass
SignResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SignResp").msgclass
InputScript = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.InputScript").msgclass
InputScriptResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.InputScriptResp").msgclass
SignMessageReq = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SignMessageReq").msgclass
SignMessageResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SignMessageResp").msgclass
VerifyMessageReq = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.VerifyMessageReq").msgclass
VerifyMessageResp = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.VerifyMessageResp").msgclass
SharedKeyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SharedKeyRequest").msgclass
SharedKeyResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("signrpc.SharedKeyResponse").msgclass
end

View File

@@ -0,0 +1,68 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: signrpc/signer.proto for package 'signrpc'
require 'grpc'
require 'signrpc/signer_pb'
module Signrpc
module Signer
# Signer is a service that gives access to the signing functionality of the
# daemon's wallet.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'signrpc.Signer'
#
# SignOutputRaw is a method that can be used to generated a signature for a
# set of inputs/outputs to a transaction. Each request specifies details
# concerning how the outputs should be signed, which keys they should be
# signed with, and also any optional tweaks. The return value is a fixed
# 64-byte signature (the same format as we use on the wire in Lightning).
#
# If we are unable to sign using the specified keys, then an error will be
# returned.
rpc :SignOutputRaw, SignReq, SignResp
#
# ComputeInputScript generates a complete InputIndex for the passed
# transaction with the signature as defined within the passed SignDescriptor.
# This method should be capable of generating the proper input script for
# both regular p2wkh output and p2wkh outputs nested within a regular p2sh
# output.
#
# Note that when using this method to sign inputs belonging to the wallet,
# the only items of the SignDescriptor that need to be populated are pkScript
# in the TxOut field, the value in that same field, and finally the input
# index.
rpc :ComputeInputScript, SignReq, InputScriptResp
#
# SignMessage signs a message with the key specified in the key locator. The
# returned signature is fixed-size LN wire format encoded.
#
# The main difference to SignMessage in the main RPC is that a specific key is
# used to sign the message instead of the node identity private key.
rpc :SignMessage, SignMessageReq, SignMessageResp
#
# VerifyMessage verifies a signature over a message using the public key
# provided. The signature must be fixed-size LN wire format encoded.
#
# The main difference to VerifyMessage in the main RPC is that the public key
# used to sign the message does not have to be a node known to the network.
rpc :VerifyMessage, VerifyMessageReq, VerifyMessageResp
#
# DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
# derivation between the ephemeral public key in the request and the node's
# key specified in the key_loc parameter (or the node's identity private key
# if no key locator is specified):
# P_shared = privKeyNode * ephemeralPubkey
# The resulting shared public key is serialized in the compressed format and
# hashed with sha256, resulting in the final key length of 256bit.
rpc :DeriveSharedKey, SharedKeyRequest, SharedKeyResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,27 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: verrpc/verrpc.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("verrpc/verrpc.proto", :syntax => :proto3) do
add_message "verrpc.VersionRequest" do
end
add_message "verrpc.Version" do
optional :commit, :string, 1
optional :commit_hash, :string, 2
optional :version, :string, 3
optional :app_major, :uint32, 4
optional :app_minor, :uint32, 5
optional :app_patch, :uint32, 6
optional :app_pre_release, :string, 7
repeated :build_tags, :string, 8
optional :go_version, :string, 9
end
end
end
module Verrpc
VersionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("verrpc.VersionRequest").msgclass
Version = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("verrpc.Version").msgclass
end

View File

@@ -0,0 +1,27 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: verrpc/verrpc.proto for package 'verrpc'
require 'grpc'
require 'verrpc/verrpc_pb'
module Verrpc
module Versioner
# Versioner is a service that can be used to get information about the version
# and build information of the running daemon.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'verrpc.Versioner'
# lncli: `version`
# GetVersion returns the current version and build information of the running
# daemon.
rpc :GetVersion, VersionRequest, Version
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,149 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: walletrpc/walletkit.proto
require 'google/protobuf'
require 'rpc_pb'
require 'signrpc/signer_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("walletrpc/walletkit.proto", :syntax => :proto3) do
add_message "walletrpc.ListUnspentRequest" do
optional :min_confs, :int32, 1
optional :max_confs, :int32, 2
end
add_message "walletrpc.ListUnspentResponse" do
repeated :utxos, :message, 1, "lnrpc.Utxo"
end
add_message "walletrpc.LeaseOutputRequest" do
optional :id, :bytes, 1
optional :outpoint, :message, 2, "lnrpc.OutPoint"
end
add_message "walletrpc.LeaseOutputResponse" do
optional :expiration, :uint64, 1
end
add_message "walletrpc.ReleaseOutputRequest" do
optional :id, :bytes, 1
optional :outpoint, :message, 2, "lnrpc.OutPoint"
end
add_message "walletrpc.ReleaseOutputResponse" do
end
add_message "walletrpc.KeyReq" do
optional :key_finger_print, :int32, 1
optional :key_family, :int32, 2
end
add_message "walletrpc.AddrRequest" do
end
add_message "walletrpc.AddrResponse" do
optional :addr, :string, 1
end
add_message "walletrpc.Transaction" do
optional :tx_hex, :bytes, 1
optional :label, :string, 2
end
add_message "walletrpc.PublishResponse" do
optional :publish_error, :string, 1
end
add_message "walletrpc.SendOutputsRequest" do
optional :sat_per_kw, :int64, 1
repeated :outputs, :message, 2, "signrpc.TxOut"
optional :label, :string, 3
end
add_message "walletrpc.SendOutputsResponse" do
optional :raw_tx, :bytes, 1
end
add_message "walletrpc.EstimateFeeRequest" do
optional :conf_target, :int32, 1
end
add_message "walletrpc.EstimateFeeResponse" do
optional :sat_per_kw, :int64, 1
end
add_message "walletrpc.PendingSweep" do
optional :outpoint, :message, 1, "lnrpc.OutPoint"
optional :witness_type, :enum, 2, "walletrpc.WitnessType"
optional :amount_sat, :uint32, 3
optional :sat_per_byte, :uint32, 4
optional :broadcast_attempts, :uint32, 5
optional :next_broadcast_height, :uint32, 6
optional :requested_conf_target, :uint32, 8
optional :requested_sat_per_byte, :uint32, 9
optional :force, :bool, 7
end
add_message "walletrpc.PendingSweepsRequest" do
end
add_message "walletrpc.PendingSweepsResponse" do
repeated :pending_sweeps, :message, 1, "walletrpc.PendingSweep"
end
add_message "walletrpc.BumpFeeRequest" do
optional :outpoint, :message, 1, "lnrpc.OutPoint"
optional :target_conf, :uint32, 2
optional :sat_per_byte, :uint32, 3
optional :force, :bool, 4
end
add_message "walletrpc.BumpFeeResponse" do
end
add_message "walletrpc.ListSweepsRequest" do
optional :verbose, :bool, 1
end
add_message "walletrpc.ListSweepsResponse" do
oneof :sweeps do
optional :transaction_details, :message, 1, "lnrpc.TransactionDetails"
optional :transaction_ids, :message, 2, "walletrpc.ListSweepsResponse.TransactionIDs"
end
end
add_message "walletrpc.ListSweepsResponse.TransactionIDs" do
repeated :transaction_ids, :string, 1
end
add_message "walletrpc.LabelTransactionRequest" do
optional :txid, :bytes, 1
optional :label, :string, 2
optional :overwrite, :bool, 3
end
add_message "walletrpc.LabelTransactionResponse" do
end
add_enum "walletrpc.WitnessType" do
value :UNKNOWN_WITNESS, 0
value :COMMITMENT_TIME_LOCK, 1
value :COMMITMENT_NO_DELAY, 2
value :COMMITMENT_REVOKE, 3
value :HTLC_OFFERED_REVOKE, 4
value :HTLC_ACCEPTED_REVOKE, 5
value :HTLC_OFFERED_TIMEOUT_SECOND_LEVEL, 6
value :HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL, 7
value :HTLC_OFFERED_REMOTE_TIMEOUT, 8
value :HTLC_ACCEPTED_REMOTE_SUCCESS, 9
value :HTLC_SECOND_LEVEL_REVOKE, 10
value :WITNESS_KEY_HASH, 11
value :NESTED_WITNESS_KEY_HASH, 12
value :COMMITMENT_ANCHOR, 13
end
end
end
module Walletrpc
ListUnspentRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ListUnspentRequest").msgclass
ListUnspentResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ListUnspentResponse").msgclass
LeaseOutputRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.LeaseOutputRequest").msgclass
LeaseOutputResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.LeaseOutputResponse").msgclass
ReleaseOutputRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ReleaseOutputRequest").msgclass
ReleaseOutputResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ReleaseOutputResponse").msgclass
KeyReq = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.KeyReq").msgclass
AddrRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.AddrRequest").msgclass
AddrResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.AddrResponse").msgclass
Transaction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.Transaction").msgclass
PublishResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.PublishResponse").msgclass
SendOutputsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.SendOutputsRequest").msgclass
SendOutputsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.SendOutputsResponse").msgclass
EstimateFeeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.EstimateFeeRequest").msgclass
EstimateFeeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.EstimateFeeResponse").msgclass
PendingSweep = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.PendingSweep").msgclass
PendingSweepsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.PendingSweepsRequest").msgclass
PendingSweepsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.PendingSweepsResponse").msgclass
BumpFeeRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.BumpFeeRequest").msgclass
BumpFeeResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.BumpFeeResponse").msgclass
ListSweepsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ListSweepsRequest").msgclass
ListSweepsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ListSweepsResponse").msgclass
ListSweepsResponse::TransactionIDs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.ListSweepsResponse.TransactionIDs").msgclass
LabelTransactionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.LabelTransactionRequest").msgclass
LabelTransactionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.LabelTransactionResponse").msgclass
WitnessType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("walletrpc.WitnessType").enummodule
end

View File

@@ -0,0 +1,115 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: walletrpc/walletkit.proto for package 'walletrpc'
require 'grpc'
require 'walletrpc/walletkit_pb'
module Walletrpc
module WalletKit
# WalletKit is a service that gives access to the core functionalities of the
# daemon's wallet.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'walletrpc.WalletKit'
#
# ListUnspent returns a list of all utxos spendable by the wallet with a
# number of confirmations between the specified minimum and maximum.
rpc :ListUnspent, ListUnspentRequest, ListUnspentResponse
#
# LeaseOutput locks an output to the given ID, preventing it from being
# available for any future coin selection attempts. The absolute time of the
# lock's expiration is returned. The expiration of the lock can be extended by
# successive invocations of this RPC. Outputs can be unlocked before their
# expiration through `ReleaseOutput`.
rpc :LeaseOutput, LeaseOutputRequest, LeaseOutputResponse
#
# ReleaseOutput unlocks an output, allowing it to be available for coin
# selection if it remains unspent. The ID should match the one used to
# originally lock the output.
rpc :ReleaseOutput, ReleaseOutputRequest, ReleaseOutputResponse
#
# DeriveNextKey attempts to derive the *next* key within the key family
# (account in BIP43) specified. This method should return the next external
# child within this branch.
rpc :DeriveNextKey, KeyReq, Signrpc::KeyDescriptor
#
# DeriveKey attempts to derive an arbitrary key specified by the passed
# KeyLocator.
rpc :DeriveKey, Signrpc::KeyLocator, Signrpc::KeyDescriptor
#
# NextAddr returns the next unused address within the wallet.
rpc :NextAddr, AddrRequest, AddrResponse
#
# PublishTransaction attempts to publish the passed transaction to the
# network. Once this returns without an error, the wallet will continually
# attempt to re-broadcast the transaction on start up, until it enters the
# chain.
rpc :PublishTransaction, Transaction, PublishResponse
#
# SendOutputs is similar to the existing sendmany call in Bitcoind, and
# allows the caller to create a transaction that sends to several outputs at
# once. This is ideal when wanting to batch create a set of transactions.
rpc :SendOutputs, SendOutputsRequest, SendOutputsResponse
#
# EstimateFee attempts to query the internal fee estimator of the wallet to
# determine the fee (in sat/kw) to attach to a transaction in order to
# achieve the confirmation target.
rpc :EstimateFee, EstimateFeeRequest, EstimateFeeResponse
#
# PendingSweeps returns lists of on-chain outputs that lnd is currently
# attempting to sweep within its central batching engine. Outputs with similar
# fee rates are batched together in order to sweep them within a single
# transaction.
#
# NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
# remain supported. This is an advanced API that depends on the internals of
# the UtxoSweeper, so things may change.
rpc :PendingSweeps, PendingSweepsRequest, PendingSweepsResponse
#
# BumpFee bumps the fee of an arbitrary input within a transaction. This RPC
# takes a different approach than bitcoind's bumpfee command. lnd has a
# central batching engine in which inputs with similar fee rates are batched
# together to save on transaction fees. Due to this, we cannot rely on
# bumping the fee on a specific transaction, since transactions can change at
# any point with the addition of new inputs. The list of inputs that
# currently exist within lnd's central batching engine can be retrieved
# through the PendingSweeps RPC.
#
# When bumping the fee of an input that currently exists within lnd's central
# batching engine, a higher fee transaction will be created that replaces the
# lower fee transaction through the Replace-By-Fee (RBF) policy. If it
#
# This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
# (CPFP), where the child transaction pays for its parent's fee. This can be
# done by specifying an outpoint within the low fee transaction that is under
# the control of the wallet.
#
# The fee preference can be expressed either as a specific fee rate or a delta
# of blocks in which the output should be swept on-chain within. If a fee
# preference is not explicitly specified, then an error is returned.
#
# Note that this RPC currently doesn't perform any validation checks on the
# fee preference being provided. For now, the responsibility of ensuring that
# the new fee preference is sufficient is delegated to the user.
rpc :BumpFee, BumpFeeRequest, BumpFeeResponse
#
# ListSweeps returns a list of the sweep transactions our node has produced.
# Note that these sweeps may not be confirmed yet, as we record sweeps on
# broadcast, not confirmation.
rpc :ListSweeps, ListSweepsRequest, ListSweepsResponse
#
# LabelTransaction adds a label to a transaction. If the transaction already
# has a label the call will fail unless the overwrite bool is set. This will
# overwrite the exiting transaction label. Labels must not be empty, and
# cannot exceed 500 characters.
rpc :LabelTransaction, LabelTransactionRequest, LabelTransactionResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,51 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: walletunlocker.proto
require 'google/protobuf'
require 'rpc_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("walletunlocker.proto", :syntax => :proto3) do
add_message "lnrpc.GenSeedRequest" do
optional :aezeed_passphrase, :bytes, 1
optional :seed_entropy, :bytes, 2
end
add_message "lnrpc.GenSeedResponse" do
repeated :cipher_seed_mnemonic, :string, 1
optional :enciphered_seed, :bytes, 2
end
add_message "lnrpc.InitWalletRequest" do
optional :wallet_password, :bytes, 1
repeated :cipher_seed_mnemonic, :string, 2
optional :aezeed_passphrase, :bytes, 3
optional :recovery_window, :int32, 4
optional :channel_backups, :message, 5, "lnrpc.ChanBackupSnapshot"
end
add_message "lnrpc.InitWalletResponse" do
end
add_message "lnrpc.UnlockWalletRequest" do
optional :wallet_password, :bytes, 1
optional :recovery_window, :int32, 2
optional :channel_backups, :message, 3, "lnrpc.ChanBackupSnapshot"
end
add_message "lnrpc.UnlockWalletResponse" do
end
add_message "lnrpc.ChangePasswordRequest" do
optional :current_password, :bytes, 1
optional :new_password, :bytes, 2
end
add_message "lnrpc.ChangePasswordResponse" do
end
end
end
module Lnrpc
GenSeedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GenSeedRequest").msgclass
GenSeedResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GenSeedResponse").msgclass
InitWalletRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.InitWalletRequest").msgclass
InitWalletResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.InitWalletResponse").msgclass
UnlockWalletRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.UnlockWalletRequest").msgclass
UnlockWalletResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.UnlockWalletResponse").msgclass
ChangePasswordRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChangePasswordRequest").msgclass
ChangePasswordResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChangePasswordResponse").msgclass
end

View File

@@ -0,0 +1,72 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: walletunlocker.proto for package 'lnrpc'
require 'grpc'
require 'walletunlocker_pb'
module Lnrpc
module WalletUnlocker
#
# Comments in this file will be directly parsed into the API
# Documentation as descriptions of the associated method, message, or field.
# These descriptions should go right above the definition of the object, and
# can be in either block or // comment format.
#
# An RPC method can be matched to an lncli command by placing a line in the
# beginning of the description in exactly the following format:
# lncli: `methodname`
#
# Failure to specify the exact name of the command will cause documentation
# generation to fail.
#
# More information on how exactly the gRPC documentation is generated from
# this proto file can be found here:
# https://github.com/lightninglabs/lightning-api
#
# WalletUnlocker is a service that is used to set up a wallet password for
# lnd at first startup, and unlock a previously set up wallet.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'lnrpc.WalletUnlocker'
#
# GenSeed is the first method that should be used to instantiate a new lnd
# instance. This method allows a caller to generate a new aezeed cipher seed
# given an optional passphrase. If provided, the passphrase will be necessary
# to decrypt the cipherseed to expose the internal wallet seed.
#
# Once the cipherseed is obtained and verified by the user, the InitWallet
# method should be used to commit the newly generated seed, and create the
# wallet.
rpc :GenSeed, GenSeedRequest, GenSeedResponse
#
# InitWallet is used when lnd is starting up for the first time to fully
# initialize the daemon and its internal wallet. At the very least a wallet
# password must be provided. This will be used to encrypt sensitive material
# on disk.
#
# In the case of a recovery scenario, the user can also specify their aezeed
# mnemonic and passphrase. If set, then the daemon will use this prior state
# to initialize its internal wallet.
#
# Alternatively, this can be used along with the GenSeed RPC to obtain a
# seed, then present it to the user. Once it has been verified by the user,
# the seed can be fed into this RPC in order to commit the new wallet.
rpc :InitWallet, InitWalletRequest, InitWalletResponse
# lncli: `unlock`
# UnlockWallet is used at startup of lnd to provide a password to unlock
# the wallet database.
rpc :UnlockWallet, UnlockWalletRequest, UnlockWalletResponse
# lncli: `changepassword`
# ChangePassword changes the password of the encrypted wallet. This will
# automatically unlock the wallet database if successful.
rpc :ChangePassword, ChangePasswordRequest, ChangePasswordResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,21 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: watchtowerrpc/watchtower.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("watchtowerrpc/watchtower.proto", :syntax => :proto3) do
add_message "watchtowerrpc.GetInfoRequest" do
end
add_message "watchtowerrpc.GetInfoResponse" do
optional :pubkey, :bytes, 1
repeated :listeners, :string, 2
repeated :uris, :string, 3
end
end
end
module Watchtowerrpc
GetInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("watchtowerrpc.GetInfoRequest").msgclass
GetInfoResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("watchtowerrpc.GetInfoResponse").msgclass
end

View File

@@ -0,0 +1,28 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: watchtowerrpc/watchtower.proto for package 'watchtowerrpc'
require 'grpc'
require 'watchtowerrpc/watchtower_pb'
module Watchtowerrpc
module Watchtower
# Watchtower is a service that grants access to the watchtower server
# functionality of the daemon.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'watchtowerrpc.Watchtower'
# lncli: tower info
# GetInfo returns general information concerning the companion watchtower
# including its public key and URIs where the server is currently
# listening for clients.
rpc :GetInfo, GetInfoRequest, GetInfoResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -0,0 +1,75 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: wtclientrpc/wtclient.proto
require 'google/protobuf'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_file("wtclientrpc/wtclient.proto", :syntax => :proto3) do
add_message "wtclientrpc.AddTowerRequest" do
optional :pubkey, :bytes, 1
optional :address, :string, 2
end
add_message "wtclientrpc.AddTowerResponse" do
end
add_message "wtclientrpc.RemoveTowerRequest" do
optional :pubkey, :bytes, 1
optional :address, :string, 2
end
add_message "wtclientrpc.RemoveTowerResponse" do
end
add_message "wtclientrpc.GetTowerInfoRequest" do
optional :pubkey, :bytes, 1
optional :include_sessions, :bool, 2
end
add_message "wtclientrpc.TowerSession" do
optional :num_backups, :uint32, 1
optional :num_pending_backups, :uint32, 2
optional :max_backups, :uint32, 3
optional :sweep_sat_per_byte, :uint32, 4
end
add_message "wtclientrpc.Tower" do
optional :pubkey, :bytes, 1
repeated :addresses, :string, 2
optional :active_session_candidate, :bool, 3
optional :num_sessions, :uint32, 4
repeated :sessions, :message, 5, "wtclientrpc.TowerSession"
end
add_message "wtclientrpc.ListTowersRequest" do
optional :include_sessions, :bool, 1
end
add_message "wtclientrpc.ListTowersResponse" do
repeated :towers, :message, 1, "wtclientrpc.Tower"
end
add_message "wtclientrpc.StatsRequest" do
end
add_message "wtclientrpc.StatsResponse" do
optional :num_backups, :uint32, 1
optional :num_pending_backups, :uint32, 2
optional :num_failed_backups, :uint32, 3
optional :num_sessions_acquired, :uint32, 4
optional :num_sessions_exhausted, :uint32, 5
end
add_message "wtclientrpc.PolicyRequest" do
end
add_message "wtclientrpc.PolicyResponse" do
optional :max_updates, :uint32, 1
optional :sweep_sat_per_byte, :uint32, 2
end
end
end
module Wtclientrpc
AddTowerRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.AddTowerRequest").msgclass
AddTowerResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.AddTowerResponse").msgclass
RemoveTowerRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.RemoveTowerRequest").msgclass
RemoveTowerResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.RemoveTowerResponse").msgclass
GetTowerInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.GetTowerInfoRequest").msgclass
TowerSession = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.TowerSession").msgclass
Tower = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.Tower").msgclass
ListTowersRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.ListTowersRequest").msgclass
ListTowersResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.ListTowersResponse").msgclass
StatsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.StatsRequest").msgclass
StatsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.StatsResponse").msgclass
PolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.PolicyRequest").msgclass
PolicyResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("wtclientrpc.PolicyResponse").msgclass
end

View File

@@ -0,0 +1,43 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: wtclientrpc/wtclient.proto for package 'wtclientrpc'
require 'grpc'
require 'wtclientrpc/wtclient_pb'
module Wtclientrpc
module WatchtowerClient
# WatchtowerClient is a service that grants access to the watchtower client
# functionality of the daemon.
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'wtclientrpc.WatchtowerClient'
#
# AddTower adds a new watchtower reachable at the given address and
# considers it for new sessions. If the watchtower already exists, then
# any new addresses included will be considered when dialing it for
# session negotiations and backups.
rpc :AddTower, AddTowerRequest, AddTowerResponse
#
# RemoveTower removes a watchtower from being considered for future session
# negotiations and from being used for any subsequent backups until it's added
# again. If an address is provided, then this RPC only serves as a way of
# removing the address from the watchtower instead.
rpc :RemoveTower, RemoveTowerRequest, RemoveTowerResponse
# ListTowers returns the list of watchtowers registered with the client.
rpc :ListTowers, ListTowersRequest, ListTowersResponse
# GetTowerInfo retrieves information for a registered watchtower.
rpc :GetTowerInfo, GetTowerInfoRequest, Tower
# Stats returns the in-memory statistics of the client since startup.
rpc :Stats, StatsRequest, StatsResponse
# Policy returns the active watchtower client policy configuration.
rpc :Policy, PolicyRequest, PolicyResponse
end
Stub = Service.rpc_stub_class
end
end

View File

@@ -1,10 +1,27 @@
require "lnrpc/version"
require "lnrpc/rpc_services_pb"
require 'lnrpc/version'
# require GRPC services
Dir[File.join(File.expand_path(File.dirname(__FILE__)), 'grpc_services/**/*_services_pb.rb')].each do |file|
require file
end
require 'securerandom'
module Lnrpc
class Error < StandardError; end
autoload :Client, 'lnrpc/client'
autoload :GrpcWrapper, 'lnrpc/grpc_wrapper'
autoload :PaymentResponse, 'lnrpc/payment_response'
autoload :MacaroonInterceptor, 'lnrpc/macaroon_interceptor'
PREIMAGE_BYTE_LENGTH = 32
KEY_SEND_PREIMAGE_TYPE = 5482373484
def self.create_preimage
SecureRandom.random_bytes(PREIMAGE_BYTE_LENGTH)
end
def self.to_byte_array(str)
[str].pack("H*")
end
end

View File

@@ -3,32 +3,12 @@ require "lnrpc/macaroon_interceptor"
module Lnrpc
class Client
attr_accessor :address, :credentials, :macaroon
attr_writer :grpc_client
LND_HOME_DIR = ENV['LND_HOME'] || "~/.lnd"
DEFAULT_ADDRESS = 'localhost:10009'
DEFAULT_CREDENTIALS_PATH = "#{LND_HOME_DIR}/tls.cert"
DEFAULT_MACAROON_PATH = "#{LND_HOME_DIR}/data/chain/bitcoin/mainnet/admin.macaroon"
NON_CONVENTION_REQUEST_CLASSES = {
add_invoice: Lnrpc::Invoice,
send_payment: Lnrpc::SendRequest,
send_payment_sync: Lnrpc::SendRequest,
open_channel_sync: Lnrpc::OpenChannelRequest,
send_to_route_sync: Lnrpc::SendToRouteRequest,
lookup_invoice: Lnrpc::PaymentHash,
decode_pay_req: Lnrpc::PayReqString,
describe_graph: Lnrpc::ChannelGraphRequest,
get_chan_info: Lnrpc::ChanInfoRequest,
get_node_info: Lnrpc::NodeInfoRequest,
get_network_info: Lnrpc::NetworkInfoRequest,
stop_daemon: Lnrpc::StopRequest,
update_channel_policy: Lnrpc::PolicyUpdateResponse,
subscribe_channel_graph: Lnrpc::GraphTopologySubscription,
subscribe_invoices: Lnrpc::InvoiceSubscription,
subscribe_transactions: Lnrpc::GetTransactionsRequest
}
def initialize(options={})
self.address = options[:address] || DEFAULT_ADDRESS
@@ -46,42 +26,77 @@ module Lnrpc
self.macaroon = options[:macaroon]
end
def grpc_client
@grpc_client ||= Lnrpc::Lightning::Stub.new(self.address,
GRPC::Core::ChannelCredentials.new(self.credentials),
interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
)
def lightning
@lightning ||= grpc_wrapper_for(Lnrpc::Lightning)
end
def pay(payreq)
self.send_payment_sync(Lnrpc::SendRequest.new(payment_request: payreq))
def autopilot
@autopilot ||= grpc_wrapper_for(Autopilotrpc::Autopilot)
end
def method_missing(m, *args, &block)
if self.grpc_client.respond_to?(m)
params = args[0]
def chain_notifier
@chain_notifier ||= grpc_wrapper_for(Chainrpc::ChainNotifier)
end
args[0] = params.nil? ? request_class_for(m).new : request_class_for(m).new(params)
self.grpc_client.send(m, *args, &block)
else
super
end
def invoices
@invoices ||= grpc_wrapper_for(Invoicesrpc::Invoices)
end
def router
@router ||= grpc_wrapper_for(Routerrpc::Router)
end
def signer
@signer ||= grpc_wrapper_for(Signrpc::Signer)
end
def versioner
@versioner ||= grpc_wrapper_for(Verrpc::Versioner)
end
def wallet_kit
@wallet_kit ||= grpc_wrapper_for(Walletrpc::WalletKit)
end
def wallet_unlocker
@wallet_unlocker ||= grpc_wrapper_for(Lnrpc::WalletUnlocker)
end
def watchtower
@watchtower ||= grpc_wrapper_for(Watchtowerrpc::Watchtower)
end
def watchtower_client
@watchtower_client ||= grpc_wrapper_for(Wtclientrpc::WatchtowerClient)
end
def keysend(args)
args[:dest_custom_records] ||= {}
args[:dest_custom_records][Lnrpc::KEY_SEND_PREIMAGE_TYPE] ||= Lnrpc.create_preimage
args[:payment_hash] ||= Digest::SHA256.digest(args[:dest_custom_records][Lnrpc::KEY_SEND_PREIMAGE_TYPE])
args[:timeout_seconds] ||= 60
PaymentResponse.new(router.send_payment_v2(args))
end
def pay(args)
args[:timeout_seconds] ||= 60
PaymentResponse.new(router.send_payment_v2(args))
end
def inspect
"#{self.to_s} @address=\"#{self.address}\""
"#{self} @address=\"#{address}\""
end
private
def request_class_for(method_name)
if NON_CONVENTION_REQUEST_CLASSES.key?(method_name.to_sym)
NON_CONVENTION_REQUEST_CLASSES[method_name.to_sym]
else
klass = method_name.to_s.sub(/^[a-z\d]*/) { |match| match.capitalize }
klass.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }
Lnrpc.const_get("#{klass}Request")
end
def grpc_wrapper_for(grpc_module)
stub = grpc_module.const_get(:Stub)
service = grpc_module.const_get(:Service)
GrpcWrapper.new(service: service,
grpc: stub.new(address,
GRPC::Core::ChannelCredentials.new(credentials),
interceptors: [Lnrpc::MacaroonInterceptor.new(macaroon)]
))
end
end
end

43
lib/lnrpc/grpc_wrapper.rb Normal file
View File

@@ -0,0 +1,43 @@
module Lnrpc
class GrpcWrapper
attr_reader :grpc, :service
def initialize(service:, grpc:)
@grpc = grpc
@service = service
end
def method_missing(m, *args, &block)
if grpc.respond_to?(m)
params = args[0]
args[0] = params.nil? ? request_class_for(m).new : request_class_for(m).new(params)
grpc.send(m, *args, &block)
else
super
end
end
def inspect
"#{self} @grpc=\"#{grpc}\""
end
private
def request_class_for(method_name)
rpc_desc = service.rpc_descs[camelize(method_name).to_sym]
raise "Request class not found for: #{method_name}" unless rpc_desc
rpc_desc.input
end
def camelize(name)
str = name.to_s
separators = ['_', '\s']
separators.each do |s|
str = str.gsub(/(?:#{s}+)([a-z])/) { $1.upcase }
end
str.gsub(/(\A|\s)([a-z])/) { $1 + $2.upcase }
end
end
end

View File

@@ -0,0 +1,30 @@
module Lnrpc
class PaymentResponse
attr_reader :grpc_response, :exception
def initialize(send_payment_response)
@grpc_response = send_payment_response
end
def states
@states ||= response_array.map(&:status)
end
def success?
return false if exception
@success ||= states.include?(:SUCCEEDED)
end
def fee
@fee ||= response_array.sum(&:fee)
end
def response_array
@response_array ||= @grpc_response.to_a
rescue GRPC::BadStatus => e
@exception = e
[]
end
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -1,877 +0,0 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: rpc.proto
require 'google/protobuf'
require 'google/api/annotations_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_message "lnrpc.GenSeedRequest" do
optional :aezeed_passphrase, :bytes, 1
optional :seed_entropy, :bytes, 2
end
add_message "lnrpc.GenSeedResponse" do
repeated :cipher_seed_mnemonic, :string, 1
optional :enciphered_seed, :bytes, 2
end
add_message "lnrpc.InitWalletRequest" do
optional :wallet_password, :bytes, 1
repeated :cipher_seed_mnemonic, :string, 2
optional :aezeed_passphrase, :bytes, 3
optional :recovery_window, :int32, 4
optional :channel_backups, :message, 5, "lnrpc.ChanBackupSnapshot"
end
add_message "lnrpc.InitWalletResponse" do
end
add_message "lnrpc.UnlockWalletRequest" do
optional :wallet_password, :bytes, 1
optional :recovery_window, :int32, 2
optional :channel_backups, :message, 3, "lnrpc.ChanBackupSnapshot"
end
add_message "lnrpc.UnlockWalletResponse" do
end
add_message "lnrpc.ChangePasswordRequest" do
optional :current_password, :bytes, 1
optional :new_password, :bytes, 2
end
add_message "lnrpc.ChangePasswordResponse" do
end
add_message "lnrpc.Utxo" do
optional :type, :enum, 1, "lnrpc.AddressType"
optional :address, :string, 2
optional :amount_sat, :int64, 3
optional :pk_script, :string, 4
optional :outpoint, :message, 5, "lnrpc.OutPoint"
optional :confirmations, :int64, 6
end
add_message "lnrpc.Transaction" do
optional :tx_hash, :string, 1
optional :amount, :int64, 2
optional :num_confirmations, :int32, 3
optional :block_hash, :string, 4
optional :block_height, :int32, 5
optional :time_stamp, :int64, 6
optional :total_fees, :int64, 7
repeated :dest_addresses, :string, 8
optional :raw_tx_hex, :string, 9
end
add_message "lnrpc.GetTransactionsRequest" do
end
add_message "lnrpc.TransactionDetails" do
repeated :transactions, :message, 1, "lnrpc.Transaction"
end
add_message "lnrpc.FeeLimit" do
oneof :limit do
optional :fixed, :int64, 1
optional :percent, :int64, 2
end
end
add_message "lnrpc.SendRequest" do
optional :dest, :bytes, 1
optional :dest_string, :string, 2
optional :amt, :int64, 3
optional :payment_hash, :bytes, 4
optional :payment_hash_string, :string, 5
optional :payment_request, :string, 6
optional :final_cltv_delta, :int32, 7
optional :fee_limit, :message, 8, "lnrpc.FeeLimit"
optional :outgoing_chan_id, :uint64, 9
optional :cltv_limit, :uint32, 10
end
add_message "lnrpc.SendResponse" do
optional :payment_error, :string, 1
optional :payment_preimage, :bytes, 2
optional :payment_route, :message, 3, "lnrpc.Route"
optional :payment_hash, :bytes, 4
end
add_message "lnrpc.SendToRouteRequest" do
optional :payment_hash, :bytes, 1
optional :payment_hash_string, :string, 2
optional :route, :message, 4, "lnrpc.Route"
end
add_message "lnrpc.ChannelPoint" do
optional :output_index, :uint32, 3
oneof :funding_txid do
optional :funding_txid_bytes, :bytes, 1
optional :funding_txid_str, :string, 2
end
end
add_message "lnrpc.OutPoint" do
optional :txid_bytes, :bytes, 1
optional :txid_str, :string, 2
optional :output_index, :uint32, 3
end
add_message "lnrpc.LightningAddress" do
optional :pubkey, :string, 1
optional :host, :string, 2
end
add_message "lnrpc.EstimateFeeRequest" do
map :AddrToAmount, :string, :int64, 1
optional :target_conf, :int32, 2
end
add_message "lnrpc.EstimateFeeResponse" do
optional :fee_sat, :int64, 1
optional :feerate_sat_per_byte, :int64, 2
end
add_message "lnrpc.SendManyRequest" do
map :AddrToAmount, :string, :int64, 1
optional :target_conf, :int32, 3
optional :sat_per_byte, :int64, 5
end
add_message "lnrpc.SendManyResponse" do
optional :txid, :string, 1
end
add_message "lnrpc.SendCoinsRequest" do
optional :addr, :string, 1
optional :amount, :int64, 2
optional :target_conf, :int32, 3
optional :sat_per_byte, :int64, 5
optional :send_all, :bool, 6
end
add_message "lnrpc.SendCoinsResponse" do
optional :txid, :string, 1
end
add_message "lnrpc.ListUnspentRequest" do
optional :min_confs, :int32, 1
optional :max_confs, :int32, 2
end
add_message "lnrpc.ListUnspentResponse" do
repeated :utxos, :message, 1, "lnrpc.Utxo"
end
add_message "lnrpc.NewAddressRequest" do
optional :type, :enum, 1, "lnrpc.AddressType"
end
add_message "lnrpc.NewAddressResponse" do
optional :address, :string, 1
end
add_message "lnrpc.SignMessageRequest" do
optional :msg, :bytes, 1
end
add_message "lnrpc.SignMessageResponse" do
optional :signature, :string, 1
end
add_message "lnrpc.VerifyMessageRequest" do
optional :msg, :bytes, 1
optional :signature, :string, 2
end
add_message "lnrpc.VerifyMessageResponse" do
optional :valid, :bool, 1
optional :pubkey, :string, 2
end
add_message "lnrpc.ConnectPeerRequest" do
optional :addr, :message, 1, "lnrpc.LightningAddress"
optional :perm, :bool, 2
end
add_message "lnrpc.ConnectPeerResponse" do
end
add_message "lnrpc.DisconnectPeerRequest" do
optional :pub_key, :string, 1
end
add_message "lnrpc.DisconnectPeerResponse" do
end
add_message "lnrpc.HTLC" do
optional :incoming, :bool, 1
optional :amount, :int64, 2
optional :hash_lock, :bytes, 3
optional :expiration_height, :uint32, 4
end
add_message "lnrpc.Channel" do
optional :active, :bool, 1
optional :remote_pubkey, :string, 2
optional :channel_point, :string, 3
optional :chan_id, :uint64, 4
optional :capacity, :int64, 5
optional :local_balance, :int64, 6
optional :remote_balance, :int64, 7
optional :commit_fee, :int64, 8
optional :commit_weight, :int64, 9
optional :fee_per_kw, :int64, 10
optional :unsettled_balance, :int64, 11
optional :total_satoshis_sent, :int64, 12
optional :total_satoshis_received, :int64, 13
optional :num_updates, :uint64, 14
repeated :pending_htlcs, :message, 15, "lnrpc.HTLC"
optional :csv_delay, :uint32, 16
optional :private, :bool, 17
optional :initiator, :bool, 18
optional :chan_status_flags, :string, 19
end
add_message "lnrpc.ListChannelsRequest" do
optional :active_only, :bool, 1
optional :inactive_only, :bool, 2
optional :public_only, :bool, 3
optional :private_only, :bool, 4
end
add_message "lnrpc.ListChannelsResponse" do
repeated :channels, :message, 11, "lnrpc.Channel"
end
add_message "lnrpc.ChannelCloseSummary" do
optional :channel_point, :string, 1
optional :chan_id, :uint64, 2
optional :chain_hash, :string, 3
optional :closing_tx_hash, :string, 4
optional :remote_pubkey, :string, 5
optional :capacity, :int64, 6
optional :close_height, :uint32, 7
optional :settled_balance, :int64, 8
optional :time_locked_balance, :int64, 9
optional :close_type, :enum, 10, "lnrpc.ChannelCloseSummary.ClosureType"
end
add_enum "lnrpc.ChannelCloseSummary.ClosureType" do
value :COOPERATIVE_CLOSE, 0
value :LOCAL_FORCE_CLOSE, 1
value :REMOTE_FORCE_CLOSE, 2
value :BREACH_CLOSE, 3
value :FUNDING_CANCELED, 4
value :ABANDONED, 5
end
add_message "lnrpc.ClosedChannelsRequest" do
optional :cooperative, :bool, 1
optional :local_force, :bool, 2
optional :remote_force, :bool, 3
optional :breach, :bool, 4
optional :funding_canceled, :bool, 5
optional :abandoned, :bool, 6
end
add_message "lnrpc.ClosedChannelsResponse" do
repeated :channels, :message, 1, "lnrpc.ChannelCloseSummary"
end
add_message "lnrpc.Peer" do
optional :pub_key, :string, 1
optional :address, :string, 3
optional :bytes_sent, :uint64, 4
optional :bytes_recv, :uint64, 5
optional :sat_sent, :int64, 6
optional :sat_recv, :int64, 7
optional :inbound, :bool, 8
optional :ping_time, :int64, 9
optional :sync_type, :enum, 10, "lnrpc.Peer.SyncType"
end
add_enum "lnrpc.Peer.SyncType" do
value :UNKNOWN_SYNC, 0
value :ACTIVE_SYNC, 1
value :PASSIVE_SYNC, 2
end
add_message "lnrpc.ListPeersRequest" do
end
add_message "lnrpc.ListPeersResponse" do
repeated :peers, :message, 1, "lnrpc.Peer"
end
add_message "lnrpc.GetInfoRequest" do
end
add_message "lnrpc.GetInfoResponse" do
optional :identity_pubkey, :string, 1
optional :alias, :string, 2
optional :num_pending_channels, :uint32, 3
optional :num_active_channels, :uint32, 4
optional :num_peers, :uint32, 5
optional :block_height, :uint32, 6
optional :block_hash, :string, 8
optional :synced_to_chain, :bool, 9
optional :testnet, :bool, 10
repeated :uris, :string, 12
optional :best_header_timestamp, :int64, 13
optional :version, :string, 14
optional :num_inactive_channels, :uint32, 15
repeated :chains, :message, 16, "lnrpc.Chain"
optional :color, :string, 17
end
add_message "lnrpc.Chain" do
optional :chain, :string, 1
optional :network, :string, 2
end
add_message "lnrpc.ConfirmationUpdate" do
optional :block_sha, :bytes, 1
optional :block_height, :int32, 2
optional :num_confs_left, :uint32, 3
end
add_message "lnrpc.ChannelOpenUpdate" do
optional :channel_point, :message, 1, "lnrpc.ChannelPoint"
end
add_message "lnrpc.ChannelCloseUpdate" do
optional :closing_txid, :bytes, 1
optional :success, :bool, 2
end
add_message "lnrpc.CloseChannelRequest" do
optional :channel_point, :message, 1, "lnrpc.ChannelPoint"
optional :force, :bool, 2
optional :target_conf, :int32, 3
optional :sat_per_byte, :int64, 4
end
add_message "lnrpc.CloseStatusUpdate" do
oneof :update do
optional :close_pending, :message, 1, "lnrpc.PendingUpdate"
optional :chan_close, :message, 3, "lnrpc.ChannelCloseUpdate"
end
end
add_message "lnrpc.PendingUpdate" do
optional :txid, :bytes, 1
optional :output_index, :uint32, 2
end
add_message "lnrpc.OpenChannelRequest" do
optional :node_pubkey, :bytes, 2
optional :node_pubkey_string, :string, 3
optional :local_funding_amount, :int64, 4
optional :push_sat, :int64, 5
optional :target_conf, :int32, 6
optional :sat_per_byte, :int64, 7
optional :private, :bool, 8
optional :min_htlc_msat, :int64, 9
optional :remote_csv_delay, :uint32, 10
optional :min_confs, :int32, 11
optional :spend_unconfirmed, :bool, 12
end
add_message "lnrpc.OpenStatusUpdate" do
oneof :update do
optional :chan_pending, :message, 1, "lnrpc.PendingUpdate"
optional :chan_open, :message, 3, "lnrpc.ChannelOpenUpdate"
end
end
add_message "lnrpc.PendingHTLC" do
optional :incoming, :bool, 1
optional :amount, :int64, 2
optional :outpoint, :string, 3
optional :maturity_height, :uint32, 4
optional :blocks_til_maturity, :int32, 5
optional :stage, :uint32, 6
end
add_message "lnrpc.PendingChannelsRequest" do
end
add_message "lnrpc.PendingChannelsResponse" do
optional :total_limbo_balance, :int64, 1
repeated :pending_open_channels, :message, 2, "lnrpc.PendingChannelsResponse.PendingOpenChannel"
repeated :pending_closing_channels, :message, 3, "lnrpc.PendingChannelsResponse.ClosedChannel"
repeated :pending_force_closing_channels, :message, 4, "lnrpc.PendingChannelsResponse.ForceClosedChannel"
repeated :waiting_close_channels, :message, 5, "lnrpc.PendingChannelsResponse.WaitingCloseChannel"
end
add_message "lnrpc.PendingChannelsResponse.PendingChannel" do
optional :remote_node_pub, :string, 1
optional :channel_point, :string, 2
optional :capacity, :int64, 3
optional :local_balance, :int64, 4
optional :remote_balance, :int64, 5
end
add_message "lnrpc.PendingChannelsResponse.PendingOpenChannel" do
optional :channel, :message, 1, "lnrpc.PendingChannelsResponse.PendingChannel"
optional :confirmation_height, :uint32, 2
optional :commit_fee, :int64, 4
optional :commit_weight, :int64, 5
optional :fee_per_kw, :int64, 6
end
add_message "lnrpc.PendingChannelsResponse.WaitingCloseChannel" do
optional :channel, :message, 1, "lnrpc.PendingChannelsResponse.PendingChannel"
optional :limbo_balance, :int64, 2
end
add_message "lnrpc.PendingChannelsResponse.ClosedChannel" do
optional :channel, :message, 1, "lnrpc.PendingChannelsResponse.PendingChannel"
optional :closing_txid, :string, 2
end
add_message "lnrpc.PendingChannelsResponse.ForceClosedChannel" do
optional :channel, :message, 1, "lnrpc.PendingChannelsResponse.PendingChannel"
optional :closing_txid, :string, 2
optional :limbo_balance, :int64, 3
optional :maturity_height, :uint32, 4
optional :blocks_til_maturity, :int32, 5
optional :recovered_balance, :int64, 6
repeated :pending_htlcs, :message, 8, "lnrpc.PendingHTLC"
end
add_message "lnrpc.ChannelEventSubscription" do
end
add_message "lnrpc.ChannelEventUpdate" do
optional :type, :enum, 5, "lnrpc.ChannelEventUpdate.UpdateType"
oneof :channel do
optional :open_channel, :message, 1, "lnrpc.Channel"
optional :closed_channel, :message, 2, "lnrpc.ChannelCloseSummary"
optional :active_channel, :message, 3, "lnrpc.ChannelPoint"
optional :inactive_channel, :message, 4, "lnrpc.ChannelPoint"
end
end
add_enum "lnrpc.ChannelEventUpdate.UpdateType" do
value :OPEN_CHANNEL, 0
value :CLOSED_CHANNEL, 1
value :ACTIVE_CHANNEL, 2
value :INACTIVE_CHANNEL, 3
end
add_message "lnrpc.WalletBalanceRequest" do
end
add_message "lnrpc.WalletBalanceResponse" do
optional :total_balance, :int64, 1
optional :confirmed_balance, :int64, 2
optional :unconfirmed_balance, :int64, 3
end
add_message "lnrpc.ChannelBalanceRequest" do
end
add_message "lnrpc.ChannelBalanceResponse" do
optional :balance, :int64, 1
optional :pending_open_balance, :int64, 2
end
add_message "lnrpc.QueryRoutesRequest" do
optional :pub_key, :string, 1
optional :amt, :int64, 2
optional :final_cltv_delta, :int32, 4
optional :fee_limit, :message, 5, "lnrpc.FeeLimit"
repeated :ignored_nodes, :bytes, 6
repeated :ignored_edges, :message, 7, "lnrpc.EdgeLocator"
optional :source_pub_key, :string, 8
end
add_message "lnrpc.EdgeLocator" do
optional :channel_id, :uint64, 1
optional :direction_reverse, :bool, 2
end
add_message "lnrpc.QueryRoutesResponse" do
repeated :routes, :message, 1, "lnrpc.Route"
end
add_message "lnrpc.Hop" do
optional :chan_id, :uint64, 1
optional :chan_capacity, :int64, 2
optional :amt_to_forward, :int64, 3
optional :fee, :int64, 4
optional :expiry, :uint32, 5
optional :amt_to_forward_msat, :int64, 6
optional :fee_msat, :int64, 7
optional :pub_key, :string, 8
end
add_message "lnrpc.Route" do
optional :total_time_lock, :uint32, 1
optional :total_fees, :int64, 2
optional :total_amt, :int64, 3
repeated :hops, :message, 4, "lnrpc.Hop"
optional :total_fees_msat, :int64, 5
optional :total_amt_msat, :int64, 6
end
add_message "lnrpc.NodeInfoRequest" do
optional :pub_key, :string, 1
optional :include_channels, :bool, 2
end
add_message "lnrpc.NodeInfo" do
optional :node, :message, 1, "lnrpc.LightningNode"
optional :num_channels, :uint32, 2
optional :total_capacity, :int64, 3
repeated :channels, :message, 4, "lnrpc.ChannelEdge"
end
add_message "lnrpc.LightningNode" do
optional :last_update, :uint32, 1
optional :pub_key, :string, 2
optional :alias, :string, 3
repeated :addresses, :message, 4, "lnrpc.NodeAddress"
optional :color, :string, 5
end
add_message "lnrpc.NodeAddress" do
optional :network, :string, 1
optional :addr, :string, 2
end
add_message "lnrpc.RoutingPolicy" do
optional :time_lock_delta, :uint32, 1
optional :min_htlc, :int64, 2
optional :fee_base_msat, :int64, 3
optional :fee_rate_milli_msat, :int64, 4
optional :disabled, :bool, 5
optional :max_htlc_msat, :uint64, 6
end
add_message "lnrpc.ChannelEdge" do
optional :channel_id, :uint64, 1
optional :chan_point, :string, 2
optional :last_update, :uint32, 3
optional :node1_pub, :string, 4
optional :node2_pub, :string, 5
optional :capacity, :int64, 6
optional :node1_policy, :message, 7, "lnrpc.RoutingPolicy"
optional :node2_policy, :message, 8, "lnrpc.RoutingPolicy"
end
add_message "lnrpc.ChannelGraphRequest" do
optional :include_unannounced, :bool, 1
end
add_message "lnrpc.ChannelGraph" do
repeated :nodes, :message, 1, "lnrpc.LightningNode"
repeated :edges, :message, 2, "lnrpc.ChannelEdge"
end
add_message "lnrpc.ChanInfoRequest" do
optional :chan_id, :uint64, 1
end
add_message "lnrpc.NetworkInfoRequest" do
end
add_message "lnrpc.NetworkInfo" do
optional :graph_diameter, :uint32, 1
optional :avg_out_degree, :double, 2
optional :max_out_degree, :uint32, 3
optional :num_nodes, :uint32, 4
optional :num_channels, :uint32, 5
optional :total_network_capacity, :int64, 6
optional :avg_channel_size, :double, 7
optional :min_channel_size, :int64, 8
optional :max_channel_size, :int64, 9
optional :median_channel_size_sat, :int64, 10
end
add_message "lnrpc.StopRequest" do
end
add_message "lnrpc.StopResponse" do
end
add_message "lnrpc.GraphTopologySubscription" do
end
add_message "lnrpc.GraphTopologyUpdate" do
repeated :node_updates, :message, 1, "lnrpc.NodeUpdate"
repeated :channel_updates, :message, 2, "lnrpc.ChannelEdgeUpdate"
repeated :closed_chans, :message, 3, "lnrpc.ClosedChannelUpdate"
end
add_message "lnrpc.NodeUpdate" do
repeated :addresses, :string, 1
optional :identity_key, :string, 2
optional :global_features, :bytes, 3
optional :alias, :string, 4
optional :color, :string, 5
end
add_message "lnrpc.ChannelEdgeUpdate" do
optional :chan_id, :uint64, 1
optional :chan_point, :message, 2, "lnrpc.ChannelPoint"
optional :capacity, :int64, 3
optional :routing_policy, :message, 4, "lnrpc.RoutingPolicy"
optional :advertising_node, :string, 5
optional :connecting_node, :string, 6
end
add_message "lnrpc.ClosedChannelUpdate" do
optional :chan_id, :uint64, 1
optional :capacity, :int64, 2
optional :closed_height, :uint32, 3
optional :chan_point, :message, 4, "lnrpc.ChannelPoint"
end
add_message "lnrpc.HopHint" do
optional :node_id, :string, 1
optional :chan_id, :uint64, 2
optional :fee_base_msat, :uint32, 3
optional :fee_proportional_millionths, :uint32, 4
optional :cltv_expiry_delta, :uint32, 5
end
add_message "lnrpc.RouteHint" do
repeated :hop_hints, :message, 1, "lnrpc.HopHint"
end
add_message "lnrpc.Invoice" do
optional :memo, :string, 1
optional :receipt, :bytes, 2
optional :r_preimage, :bytes, 3
optional :r_hash, :bytes, 4
optional :value, :int64, 5
optional :settled, :bool, 6
optional :creation_date, :int64, 7
optional :settle_date, :int64, 8
optional :payment_request, :string, 9
optional :description_hash, :bytes, 10
optional :expiry, :int64, 11
optional :fallback_addr, :string, 12
optional :cltv_expiry, :uint64, 13
repeated :route_hints, :message, 14, "lnrpc.RouteHint"
optional :private, :bool, 15
optional :add_index, :uint64, 16
optional :settle_index, :uint64, 17
optional :amt_paid, :int64, 18
optional :amt_paid_sat, :int64, 19
optional :amt_paid_msat, :int64, 20
optional :state, :enum, 21, "lnrpc.Invoice.InvoiceState"
end
add_enum "lnrpc.Invoice.InvoiceState" do
value :OPEN, 0
value :SETTLED, 1
value :CANCELED, 2
value :ACCEPTED, 3
end
add_message "lnrpc.AddInvoiceResponse" do
optional :r_hash, :bytes, 1
optional :payment_request, :string, 2
optional :add_index, :uint64, 16
end
add_message "lnrpc.PaymentHash" do
optional :r_hash_str, :string, 1
optional :r_hash, :bytes, 2
end
add_message "lnrpc.ListInvoiceRequest" do
optional :pending_only, :bool, 1
optional :index_offset, :uint64, 4
optional :num_max_invoices, :uint64, 5
optional :reversed, :bool, 6
end
add_message "lnrpc.ListInvoiceResponse" do
repeated :invoices, :message, 1, "lnrpc.Invoice"
optional :last_index_offset, :uint64, 2
optional :first_index_offset, :uint64, 3
end
add_message "lnrpc.InvoiceSubscription" do
optional :add_index, :uint64, 1
optional :settle_index, :uint64, 2
end
add_message "lnrpc.Payment" do
optional :payment_hash, :string, 1
optional :value, :int64, 2
optional :creation_date, :int64, 3
repeated :path, :string, 4
optional :fee, :int64, 5
optional :payment_preimage, :string, 6
optional :value_sat, :int64, 7
optional :value_msat, :int64, 8
optional :payment_request, :string, 9
optional :status, :enum, 10, "lnrpc.Payment.PaymentStatus"
end
add_enum "lnrpc.Payment.PaymentStatus" do
value :UNKNOWN, 0
value :IN_FLIGHT, 1
value :SUCCEEDED, 2
value :FAILED, 3
end
add_message "lnrpc.ListPaymentsRequest" do
optional :include_incomplete, :bool, 1
end
add_message "lnrpc.ListPaymentsResponse" do
repeated :payments, :message, 1, "lnrpc.Payment"
end
add_message "lnrpc.DeleteAllPaymentsRequest" do
end
add_message "lnrpc.DeleteAllPaymentsResponse" do
end
add_message "lnrpc.AbandonChannelRequest" do
optional :channel_point, :message, 1, "lnrpc.ChannelPoint"
end
add_message "lnrpc.AbandonChannelResponse" do
end
add_message "lnrpc.DebugLevelRequest" do
optional :show, :bool, 1
optional :level_spec, :string, 2
end
add_message "lnrpc.DebugLevelResponse" do
optional :sub_systems, :string, 1
end
add_message "lnrpc.PayReqString" do
optional :pay_req, :string, 1
end
add_message "lnrpc.PayReq" do
optional :destination, :string, 1
optional :payment_hash, :string, 2
optional :num_satoshis, :int64, 3
optional :timestamp, :int64, 4
optional :expiry, :int64, 5
optional :description, :string, 6
optional :description_hash, :string, 7
optional :fallback_addr, :string, 8
optional :cltv_expiry, :int64, 9
repeated :route_hints, :message, 10, "lnrpc.RouteHint"
end
add_message "lnrpc.FeeReportRequest" do
end
add_message "lnrpc.ChannelFeeReport" do
optional :chan_point, :string, 1
optional :base_fee_msat, :int64, 2
optional :fee_per_mil, :int64, 3
optional :fee_rate, :double, 4
end
add_message "lnrpc.FeeReportResponse" do
repeated :channel_fees, :message, 1, "lnrpc.ChannelFeeReport"
optional :day_fee_sum, :uint64, 2
optional :week_fee_sum, :uint64, 3
optional :month_fee_sum, :uint64, 4
end
add_message "lnrpc.PolicyUpdateRequest" do
optional :base_fee_msat, :int64, 3
optional :fee_rate, :double, 4
optional :time_lock_delta, :uint32, 5
oneof :scope do
optional :global, :bool, 1
optional :chan_point, :message, 2, "lnrpc.ChannelPoint"
end
end
add_message "lnrpc.PolicyUpdateResponse" do
end
add_message "lnrpc.ForwardingHistoryRequest" do
optional :start_time, :uint64, 1
optional :end_time, :uint64, 2
optional :index_offset, :uint32, 3
optional :num_max_events, :uint32, 4
end
add_message "lnrpc.ForwardingEvent" do
optional :timestamp, :uint64, 1
optional :chan_id_in, :uint64, 2
optional :chan_id_out, :uint64, 4
optional :amt_in, :uint64, 5
optional :amt_out, :uint64, 6
optional :fee, :uint64, 7
optional :fee_msat, :uint64, 8
end
add_message "lnrpc.ForwardingHistoryResponse" do
repeated :forwarding_events, :message, 1, "lnrpc.ForwardingEvent"
optional :last_offset_index, :uint32, 2
end
add_message "lnrpc.ExportChannelBackupRequest" do
optional :chan_point, :message, 1, "lnrpc.ChannelPoint"
end
add_message "lnrpc.ChannelBackup" do
optional :chan_point, :message, 1, "lnrpc.ChannelPoint"
optional :chan_backup, :bytes, 2
end
add_message "lnrpc.MultiChanBackup" do
repeated :chan_points, :message, 1, "lnrpc.ChannelPoint"
optional :multi_chan_backup, :bytes, 2
end
add_message "lnrpc.ChanBackupExportRequest" do
end
add_message "lnrpc.ChanBackupSnapshot" do
optional :single_chan_backups, :message, 1, "lnrpc.ChannelBackups"
optional :multi_chan_backup, :message, 2, "lnrpc.MultiChanBackup"
end
add_message "lnrpc.ChannelBackups" do
repeated :chan_backups, :message, 1, "lnrpc.ChannelBackup"
end
add_message "lnrpc.RestoreChanBackupRequest" do
oneof :backup do
optional :chan_backups, :message, 1, "lnrpc.ChannelBackups"
optional :multi_chan_backup, :bytes, 2
end
end
add_message "lnrpc.RestoreBackupResponse" do
end
add_message "lnrpc.ChannelBackupSubscription" do
end
add_message "lnrpc.VerifyChanBackupResponse" do
end
add_enum "lnrpc.AddressType" do
value :WITNESS_PUBKEY_HASH, 0
value :NESTED_PUBKEY_HASH, 1
value :UNUSED_WITNESS_PUBKEY_HASH, 2
value :UNUSED_NESTED_PUBKEY_HASH, 3
end
end
module Lnrpc
GenSeedRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GenSeedRequest").msgclass
GenSeedResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GenSeedResponse").msgclass
InitWalletRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.InitWalletRequest").msgclass
InitWalletResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.InitWalletResponse").msgclass
UnlockWalletRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.UnlockWalletRequest").msgclass
UnlockWalletResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.UnlockWalletResponse").msgclass
ChangePasswordRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChangePasswordRequest").msgclass
ChangePasswordResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChangePasswordResponse").msgclass
Utxo = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Utxo").msgclass
Transaction = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Transaction").msgclass
GetTransactionsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GetTransactionsRequest").msgclass
TransactionDetails = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.TransactionDetails").msgclass
FeeLimit = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.FeeLimit").msgclass
SendRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendRequest").msgclass
SendResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendResponse").msgclass
SendToRouteRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendToRouteRequest").msgclass
ChannelPoint = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelPoint").msgclass
OutPoint = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.OutPoint").msgclass
LightningAddress = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.LightningAddress").msgclass
EstimateFeeRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.EstimateFeeRequest").msgclass
EstimateFeeResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.EstimateFeeResponse").msgclass
SendManyRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendManyRequest").msgclass
SendManyResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendManyResponse").msgclass
SendCoinsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendCoinsRequest").msgclass
SendCoinsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SendCoinsResponse").msgclass
ListUnspentRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListUnspentRequest").msgclass
ListUnspentResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListUnspentResponse").msgclass
NewAddressRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NewAddressRequest").msgclass
NewAddressResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NewAddressResponse").msgclass
SignMessageRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SignMessageRequest").msgclass
SignMessageResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.SignMessageResponse").msgclass
VerifyMessageRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.VerifyMessageRequest").msgclass
VerifyMessageResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.VerifyMessageResponse").msgclass
ConnectPeerRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ConnectPeerRequest").msgclass
ConnectPeerResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ConnectPeerResponse").msgclass
DisconnectPeerRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DisconnectPeerRequest").msgclass
DisconnectPeerResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DisconnectPeerResponse").msgclass
HTLC = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.HTLC").msgclass
Channel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Channel").msgclass
ListChannelsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListChannelsRequest").msgclass
ListChannelsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListChannelsResponse").msgclass
ChannelCloseSummary = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelCloseSummary").msgclass
ChannelCloseSummary::ClosureType = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelCloseSummary.ClosureType").enummodule
ClosedChannelsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ClosedChannelsRequest").msgclass
ClosedChannelsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ClosedChannelsResponse").msgclass
Peer = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Peer").msgclass
Peer::SyncType = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Peer.SyncType").enummodule
ListPeersRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListPeersRequest").msgclass
ListPeersResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListPeersResponse").msgclass
GetInfoRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GetInfoRequest").msgclass
GetInfoResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GetInfoResponse").msgclass
Chain = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Chain").msgclass
ConfirmationUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ConfirmationUpdate").msgclass
ChannelOpenUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelOpenUpdate").msgclass
ChannelCloseUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelCloseUpdate").msgclass
CloseChannelRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.CloseChannelRequest").msgclass
CloseStatusUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.CloseStatusUpdate").msgclass
PendingUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingUpdate").msgclass
OpenChannelRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.OpenChannelRequest").msgclass
OpenStatusUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.OpenStatusUpdate").msgclass
PendingHTLC = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingHTLC").msgclass
PendingChannelsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsRequest").msgclass
PendingChannelsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse").msgclass
PendingChannelsResponse::PendingChannel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse.PendingChannel").msgclass
PendingChannelsResponse::PendingOpenChannel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse.PendingOpenChannel").msgclass
PendingChannelsResponse::WaitingCloseChannel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse.WaitingCloseChannel").msgclass
PendingChannelsResponse::ClosedChannel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse.ClosedChannel").msgclass
PendingChannelsResponse::ForceClosedChannel = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PendingChannelsResponse.ForceClosedChannel").msgclass
ChannelEventSubscription = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelEventSubscription").msgclass
ChannelEventUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelEventUpdate").msgclass
ChannelEventUpdate::UpdateType = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelEventUpdate.UpdateType").enummodule
WalletBalanceRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.WalletBalanceRequest").msgclass
WalletBalanceResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.WalletBalanceResponse").msgclass
ChannelBalanceRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelBalanceRequest").msgclass
ChannelBalanceResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelBalanceResponse").msgclass
QueryRoutesRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.QueryRoutesRequest").msgclass
EdgeLocator = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.EdgeLocator").msgclass
QueryRoutesResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.QueryRoutesResponse").msgclass
Hop = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Hop").msgclass
Route = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Route").msgclass
NodeInfoRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NodeInfoRequest").msgclass
NodeInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NodeInfo").msgclass
LightningNode = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.LightningNode").msgclass
NodeAddress = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NodeAddress").msgclass
RoutingPolicy = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.RoutingPolicy").msgclass
ChannelEdge = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelEdge").msgclass
ChannelGraphRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelGraphRequest").msgclass
ChannelGraph = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelGraph").msgclass
ChanInfoRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChanInfoRequest").msgclass
NetworkInfoRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NetworkInfoRequest").msgclass
NetworkInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NetworkInfo").msgclass
StopRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.StopRequest").msgclass
StopResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.StopResponse").msgclass
GraphTopologySubscription = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GraphTopologySubscription").msgclass
GraphTopologyUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.GraphTopologyUpdate").msgclass
NodeUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.NodeUpdate").msgclass
ChannelEdgeUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelEdgeUpdate").msgclass
ClosedChannelUpdate = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ClosedChannelUpdate").msgclass
HopHint = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.HopHint").msgclass
RouteHint = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.RouteHint").msgclass
Invoice = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Invoice").msgclass
Invoice::InvoiceState = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Invoice.InvoiceState").enummodule
AddInvoiceResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.AddInvoiceResponse").msgclass
PaymentHash = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PaymentHash").msgclass
ListInvoiceRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListInvoiceRequest").msgclass
ListInvoiceResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListInvoiceResponse").msgclass
InvoiceSubscription = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.InvoiceSubscription").msgclass
Payment = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Payment").msgclass
Payment::PaymentStatus = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.Payment.PaymentStatus").enummodule
ListPaymentsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListPaymentsRequest").msgclass
ListPaymentsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ListPaymentsResponse").msgclass
DeleteAllPaymentsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DeleteAllPaymentsRequest").msgclass
DeleteAllPaymentsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DeleteAllPaymentsResponse").msgclass
AbandonChannelRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.AbandonChannelRequest").msgclass
AbandonChannelResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.AbandonChannelResponse").msgclass
DebugLevelRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DebugLevelRequest").msgclass
DebugLevelResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.DebugLevelResponse").msgclass
PayReqString = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PayReqString").msgclass
PayReq = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PayReq").msgclass
FeeReportRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.FeeReportRequest").msgclass
ChannelFeeReport = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelFeeReport").msgclass
FeeReportResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.FeeReportResponse").msgclass
PolicyUpdateRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PolicyUpdateRequest").msgclass
PolicyUpdateResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.PolicyUpdateResponse").msgclass
ForwardingHistoryRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ForwardingHistoryRequest").msgclass
ForwardingEvent = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ForwardingEvent").msgclass
ForwardingHistoryResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ForwardingHistoryResponse").msgclass
ExportChannelBackupRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ExportChannelBackupRequest").msgclass
ChannelBackup = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelBackup").msgclass
MultiChanBackup = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.MultiChanBackup").msgclass
ChanBackupExportRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChanBackupExportRequest").msgclass
ChanBackupSnapshot = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChanBackupSnapshot").msgclass
ChannelBackups = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelBackups").msgclass
RestoreChanBackupRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.RestoreChanBackupRequest").msgclass
RestoreBackupResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.RestoreBackupResponse").msgclass
ChannelBackupSubscription = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.ChannelBackupSubscription").msgclass
VerifyChanBackupResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.VerifyChanBackupResponse").msgclass
AddressType = Google::Protobuf::DescriptorPool.generated_pool.lookup("lnrpc.AddressType").enummodule
end

View File

@@ -1,3 +1,3 @@
module Lnrpc
VERSION = "0.7.0"
VERSION = "0.11.0"
end

View File

@@ -14,6 +14,8 @@ Gem::Specification.new do |spec|
spec.homepage = "https://github.com/bumi/lnrpc"
spec.license = "MIT"
spec.metadata['funding'] = 'lightning:02ad33d99d0bb3bf3bb8ec8e089cbefa8fd7de23a13cfa59aec9af9730816be76f'
# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
@@ -21,12 +23,12 @@ Gem::Specification.new do |spec|
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.require_paths = ["lib", "lib/grpc_services"]
spec.add_development_dependency "bundler", "~> 1.17"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rake", "~> 13.0"
spec.add_development_dependency "rspec", "~> 3.0"
spec.add_dependency "grpc", ">= 1.19.0"
spec.add_dependency "google-protobuf", ">=3.7"
end