Merge pull request #6795 from Roasbeef/go1-19

build: make Go 1.18 the min version, update to Go 1.19
This commit is contained in:
Olaoluwa Osuntokun authored and GitHub committed 2022-08-24 15:33:37 -05:00
commit 2ad6b57f5e
37 files changed
+2795 -3547

No files matched your search

+1 -1
View File
@@ -29,7 +29,7 @@ env:
# /dev.Dockerfile # /dev.Dockerfile
# /make/builder.Dockerfile # /make/builder.Dockerfile
# /.github/workflows/release.yml # /.github/workflows/release.yml
GO_VERSION: 1.18.2 GO_VERSION: 1.19.0
jobs: jobs:
######################## ########################
+1 -1
View File
@@ -16,7 +16,7 @@ env:
# /dev.Dockerfile # /dev.Dockerfile
# /make/builder.Dockerfile # /make/builder.Dockerfile
# /.github/workflows/main.yml # /.github/workflows/main.yml
GO_VERSION: 1.18.2 GO_VERSION: 1.19.0
jobs: jobs:
main: main:
+1 -1
View File
@@ -21,7 +21,7 @@ go:
# /make/builder.Dockerfile # /make/builder.Dockerfile
# /.github/workflows/main.yml # /.github/workflows/main.yml
# /.github/workflows/release.yml # /.github/workflows/release.yml
- "1.18.2" - "1.19.0"
env: env:
global: global:
+1 -1
View File
@@ -4,7 +4,7 @@
# /make/builder.Dockerfile # /make/builder.Dockerfile
# /.github/workflows/main.yml # /.github/workflows/main.yml
# /.github/workflows/release.yml # /.github/workflows/release.yml
FROM golang:1.18.2-alpine as builder FROM golang:1.19-alpine as builder
# Force Go to use the cgo based DNS resolver. This is required to ensure DNS # Force Go to use the cgo based DNS resolver. This is required to ensure DNS
# queries required to connect to linked containers succeed. # queries required to connect to linked containers succeed.
+1 -1
View File
@@ -4,7 +4,7 @@
# /make/builder.Dockerfile # /make/builder.Dockerfile
# /.github/workflows/main.yml # /.github/workflows/main.yml
# /.github/workflows/release.yml # /.github/workflows/release.yml
FROM golang:1.18.2-alpine as builder FROM golang:1.19-alpine as builder
LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>" LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.17.3-alpine as builder FROM golang:1.19-alpine as builder
LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>" LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>"
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.17.3-alpine as builder FROM golang:1.19-alpine as builder
LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>" LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>"
+11 -2
View File
@@ -1,5 +1,10 @@
# Release Notes # Release Notes
## BOLT Specs
* Warning messages from peers are now recognized and
[logged](https://github.com/lightningnetwork/lnd/pull/6546) by lnd.
## RPC ## RPC
The `RegisterConfirmationsNtfn` call of the `chainnotifier` RPC sub-server [now The `RegisterConfirmationsNtfn` call of the `chainnotifier` RPC sub-server [now
@@ -18,9 +23,13 @@ transaction](https://github.com/lightningnetwork/lnd/pull/6730).
* [Add list addresses RPC](https://github.com/lightningnetwork/lnd/pull/6596). * [Add list addresses RPC](https://github.com/lightningnetwork/lnd/pull/6596).
## Build
[The project has updated to Go
1.19](https://github.com/lightningnetwork/lnd/pull/6795)! Go 1.18 is now the
minimum version needed to build the project.
## Misc ## Misc
* Warning messages from peers are now recognized and
[logged](https://github.com/lightningnetwork/lnd/pull/6546) by lnd.
* [Fixed error typo](https://github.com/lightningnetwork/lnd/pull/6659). * [Fixed error typo](https://github.com/lightningnetwork/lnd/pull/6659).
+1 -1
View File
@@ -169,6 +169,6 @@ replace github.com/gogo/protobuf => github.com/gogo/protobuf v1.3.2
// If you change this please also update .github/pull_request_template.md and // If you change this please also update .github/pull_request_template.md and
// docs/INSTALL.md. // docs/INSTALL.md.
go 1.17 go 1.18
retract v0.0.2 retract v0.0.2
-53
View File
@@ -126,7 +126,6 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054 h1:uH66TXeswKn5PW5zdZ39xEwfS9an067BirqA+P4QaLI=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -318,7 +317,6 @@ github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/J
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=
@@ -339,7 +337,6 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W
github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA=
github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg=
@@ -388,48 +385,18 @@ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/ansiterm v0.0.0-20160907234532-b99631de12cf/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c h1:3UvYABOQRhJAApj9MdCN+Ydv841ETSoy6xLzdmmr/9A= github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c h1:3UvYABOQRhJAApj9MdCN+Ydv841ETSoy6xLzdmmr/9A=
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA=
github.com/juju/cmd v0.0.0-20171107070456-e74f39857ca0/go.mod h1:yWJQHl73rdSX4DHVKGqkAip+huBslxRwS8m9CrOLq18=
github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271 h1:4R626WTwa7pRYQFiIRLVPepMhm05eZMEx+wIurRnMLc= github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271 h1:4R626WTwa7pRYQFiIRLVPepMhm05eZMEx+wIurRnMLc=
github.com/juju/collections v0.0.0-20200605021417-0d0ec82b7271/go.mod h1:5XgO71dV1JClcOJE+4dzdn4HrI5LiyKd7PlVG6eZYhY=
github.com/juju/errors v0.0.0-20150916125642-1b5e39b83d18/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
github.com/juju/errors v0.0.0-20200330140219-3fe23663418f/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
github.com/juju/errors v0.0.0-20220203013757-bd733f3c86b9 h1:EJHbsNpQyupmMeWTq7inn+5L/WZ7JfzCVPJ+DP9McCQ= github.com/juju/errors v0.0.0-20220203013757-bd733f3c86b9 h1:EJHbsNpQyupmMeWTq7inn+5L/WZ7JfzCVPJ+DP9McCQ=
github.com/juju/errors v0.0.0-20220203013757-bd733f3c86b9/go.mod h1:TRm7EVGA3mQOqSVcBySRY7a9Y1/gyVhh/WTCnc5sD4U=
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
github.com/juju/httpprof v0.0.0-20141217160036-14bf14c30767/go.mod h1:+MaLYz4PumRkkyHYeXJ2G5g5cIW0sli2bOfpmbaMV/g=
github.com/juju/loggo v0.0.0-20170605014607-8232ab8918d9/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
github.com/juju/loggo v0.0.0-20200526014432-9ce3a2e09b5e/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 h1:NO5tuyw++EGLnz56Q8KMyDZRwJwWO8jQnj285J3FOmY= github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 h1:NO5tuyw++EGLnz56Q8KMyDZRwJwWO8jQnj285J3FOmY=
github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4/go.mod h1:NIXFioti1SmKAlKNuUwbMenNdef59IF52+ZzuOmHYkg= github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4/go.mod h1:NIXFioti1SmKAlKNuUwbMenNdef59IF52+ZzuOmHYkg=
github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208 h1:/WiCm+Vpj87e4QWuWwPD/bNE9kDrWCLvPBHOQNcG2+A= github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208 h1:/WiCm+Vpj87e4QWuWwPD/bNE9kDrWCLvPBHOQNcG2+A=
github.com/juju/mgo/v2 v2.0.0-20210302023703-70d5d206e208/go.mod h1:0OChplkvPTZ174D2FYZXg4IB9hbEwyHkD+zT+/eK+Fg=
github.com/juju/mutex v0.0.0-20171110020013-1fe2a4bf0a3a/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY=
github.com/juju/retry v0.0.0-20151029024821-62c620325291/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4=
github.com/juju/retry v0.0.0-20180821225755-9058e192b216 h1:/eQL7EJQKFHByJe3DeE8Z36yqManj9UY5zppDoQi4FU= github.com/juju/retry v0.0.0-20180821225755-9058e192b216 h1:/eQL7EJQKFHByJe3DeE8Z36yqManj9UY5zppDoQi4FU=
github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4=
github.com/juju/testing v0.0.0-20180402130637-44801989f0f7/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
github.com/juju/testing v0.0.0-20210302031854-2c7ee8570c07/go.mod h1:7lxZW0B50+xdGFkvhAb8bwAGt6IU87JB1H9w4t8MNVM=
github.com/juju/testing v0.0.0-20220202055744-1ad0816210a6/go.mod h1:QgWc2UdIPJ8t3rnvv95tFNOsQDfpXYEZDbP281o3b2c=
github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494 h1:XEDzpuZb8Ma7vLja3+5hzUqVTvAqm5Y+ygvnDs5iTMM= github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494 h1:XEDzpuZb8Ma7vLja3+5hzUqVTvAqm5Y+ygvnDs5iTMM=
github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494/go.mod h1:rUquetT0ALL48LHZhyRGvjjBH8xZaZ8dFClulKK5wK4= github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494/go.mod h1:rUquetT0ALL48LHZhyRGvjjBH8xZaZ8dFClulKK5wK4=
github.com/juju/utils v0.0.0-20180424094159-2000ea4ff043/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647 h1:wQpkHVbIIpz1PCcLYku9KFWsJ7aEMQXHBBmLy3tRBTk=
github.com/juju/utils v0.0.0-20200116185830-d40c2fe10647/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
github.com/juju/utils/v2 v2.0.0-20200923005554-4646bfea2ef1/go.mod h1:fdlDtQlzundleLLz/ggoYinEt/LmnrpNKcNTABQATNI=
github.com/juju/utils/v3 v3.0.0-20220130232349-cd7ecef0e94a h1:5ZWDCeCF0RaITrZGemzmDFIhjR/MVSvBUqgSyaeTMbE= github.com/juju/utils/v3 v3.0.0-20220130232349-cd7ecef0e94a h1:5ZWDCeCF0RaITrZGemzmDFIhjR/MVSvBUqgSyaeTMbE=
github.com/juju/utils/v3 v3.0.0-20220130232349-cd7ecef0e94a/go.mod h1:LzwbbEN7buYjySp4nqnti6c6olSqRXUk6RkbSUUP1n8=
github.com/juju/version v0.0.0-20161031051906-1f41e27e54f2/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6 h1:nrqc9b4YKpKV4lPI3GPPFbo5FUuxkWxgZE2Z8O4lgaw=
github.com/juju/version v0.0.0-20191219164919-81c1be00b9a6/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
github.com/juju/version/v2 v2.0.0-20211007103408-2e8da085dc23 h1:wtEPbidt1VyHlb8RSztU6ySQj29FLsOQiI9XiJhXDM4= github.com/juju/version/v2 v2.0.0-20211007103408-2e8da085dc23 h1:wtEPbidt1VyHlb8RSztU6ySQj29FLsOQiI9XiJhXDM4=
github.com/juju/version/v2 v2.0.0-20211007103408-2e8da085dc23/go.mod h1:Ljlbryh9sYaUSGXucslAEDf0A2XUSGvDbHJgW8ps6nc=
github.com/julienschmidt/httprouter v1.1.1-0.20151013225520-77a895ad01eb/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
@@ -500,10 +467,6 @@ github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796/go.mod h1:3p7ZTf9V1s
github.com/ltcsuite/ltcutil v0.0.0-20181217130922-17f3b04680b6/go.mod h1:8Vg/LTOO0KYa/vlHWJ6XZAevPQThGH5sufO0Hrou/lA= github.com/ltcsuite/ltcutil v0.0.0-20181217130922-17f3b04680b6/go.mod h1:8Vg/LTOO0KYa/vlHWJ6XZAevPQThGH5sufO0Hrou/lA=
github.com/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/masterzen/azure-sdk-for-go v3.2.0-beta.0.20161014135628-ee4f0065d00c+incompatible/go.mod h1:mf8fjOu33zCqxUjuiU3I8S1lJMyEAlH+0F2+M5xl3hE=
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc=
github.com/masterzen/winrm v0.0.0-20161014151040-7a535cd943fc/go.mod h1:CfZSN7zwz5gJiFhZJz49Uzk7mEBHIceWmbFmYx7Hf7E=
github.com/masterzen/xmlpath v0.0.0-20140218185901-13f4951698ad/go.mod h1:A0zPC53iKKKcXYxr4ROjpQRQ5FgJXtelNdSmHHuq/tY=
github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
@@ -538,7 +501,6 @@ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
github.com/nwaples/rardecode v1.1.2 h1:Cj0yZY6T1Zx1R7AhTbyGSALm44/Mmq+BAPc4B/p/d3M= github.com/nwaples/rardecode v1.1.2 h1:Cj0yZY6T1Zx1R7AhTbyGSALm44/Mmq+BAPc4B/p/d3M=
github.com/nwaples/rardecode v1.1.2/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/nwaples/rardecode v1.1.2/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
@@ -665,7 +627,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo= gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ= gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
@@ -734,7 +695,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180214000028-650f4a345ab4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -745,7 +705,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -786,8 +745,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -826,7 +783,6 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
@@ -911,7 +867,6 @@ golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1092,27 +1047,21 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg=
gopkg.in/errgo.v1 v1.0.1 h1:oQFRXzZ7CkBGdm1XZm/EbQYaYNNEElNBOd09M6cqNso= gopkg.in/errgo.v1 v1.0.1 h1:oQFRXzZ7CkBGdm1XZm/EbQYaYNNEElNBOd09M6cqNso=
gopkg.in/errgo.v1 v1.0.1/go.mod h1:3NjfXwocQRYAPTq4/fzX+CwUhPRcR/azYRhj8G+LqMo= gopkg.in/errgo.v1 v1.0.1/go.mod h1:3NjfXwocQRYAPTq4/fzX+CwUhPRcR/azYRhj8G+LqMo=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0=
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/macaroon-bakery.v2 v2.0.1 h1:0N1TlEdfLP4HXNCg7MQUMp5XwvOoxk+oe9Owr2cpvsc= gopkg.in/macaroon-bakery.v2 v2.0.1 h1:0N1TlEdfLP4HXNCg7MQUMp5XwvOoxk+oe9Owr2cpvsc=
gopkg.in/macaroon-bakery.v2 v2.0.1/go.mod h1:B4/T17l+ZWGwxFSZQmlBwp25x+og7OkhETfr3S9MbIA= gopkg.in/macaroon-bakery.v2 v2.0.1/go.mod h1:B4/T17l+ZWGwxFSZQmlBwp25x+og7OkhETfr3S9MbIA=
gopkg.in/macaroon.v2 v2.0.0 h1:LVWycAfeJBUjCIqfR9gqlo7I8vmiXRr51YEOZ1suop8= gopkg.in/macaroon.v2 v2.0.0 h1:LVWycAfeJBUjCIqfR9gqlo7I8vmiXRr51YEOZ1suop8=
gopkg.in/macaroon.v2 v2.0.0/go.mod h1:+I6LnTMkm/uV5ew/0nsulNjL16SK4+C8yDmRUzHR17I= gopkg.in/macaroon.v2 v2.0.0/go.mod h1:+I6LnTMkm/uV5ew/0nsulNjL16SK4+C8yDmRUzHR17I=
gopkg.in/mgo.v2 v2.0.0-20160818015218-f2b6f6c918c4/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk=
gopkg.in/yaml.v2 v2.0.0-20170712054546-1be3d31502d6/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -1134,8 +1083,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.17.3-buster FROM golang:1.19-buster
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
+2 -3
View File
@@ -302,9 +302,8 @@ type SetScoresRequest struct {
// The name of the heuristic to provide scores to. // The name of the heuristic to provide scores to.
Heuristic string `protobuf:"bytes,1,opt,name=heuristic,proto3" json:"heuristic,omitempty"` Heuristic string `protobuf:"bytes,1,opt,name=heuristic,proto3" json:"heuristic,omitempty"`
// // A map from hex-encoded public keys to scores. Scores must be in the range
//A map from hex-encoded public keys to scores. Scores must be in the range // [0.0, 1.0].
//[0.0, 1.0].
Scores map[string]float64 `protobuf:"bytes,2,rep,name=scores,proto3" json:"scores,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` Scores map[string]float64 `protobuf:"bytes,2,rep,name=scores,proto3" json:"scores,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
} }
+16 -24
View File
@@ -18,21 +18,17 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type AutopilotClient interface { type AutopilotClient interface {
// // Status returns whether the daemon's autopilot agent is active.
//Status returns whether the daemon's autopilot agent is active.
Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error)
// // ModifyStatus is used to modify the status of the autopilot agent, like
//ModifyStatus is used to modify the status of the autopilot agent, like // enabling or disabling it.
//enabling or disabling it.
ModifyStatus(ctx context.Context, in *ModifyStatusRequest, opts ...grpc.CallOption) (*ModifyStatusResponse, error) ModifyStatus(ctx context.Context, in *ModifyStatusRequest, opts ...grpc.CallOption) (*ModifyStatusResponse, error)
// // QueryScores queries all available autopilot heuristics, in addition to any
//QueryScores queries all available autopilot heuristics, in addition to any // active combination of these heruristics, for the scores they would give to
//active combination of these heruristics, for the scores they would give to // the given nodes.
//the given nodes.
QueryScores(ctx context.Context, in *QueryScoresRequest, opts ...grpc.CallOption) (*QueryScoresResponse, error) QueryScores(ctx context.Context, in *QueryScoresRequest, opts ...grpc.CallOption) (*QueryScoresResponse, error)
// // SetScores attempts to set the scores used by the running autopilot agent,
//SetScores attempts to set the scores used by the running autopilot agent, // if the external scoring heuristic is enabled.
//if the external scoring heuristic is enabled.
SetScores(ctx context.Context, in *SetScoresRequest, opts ...grpc.CallOption) (*SetScoresResponse, error) SetScores(ctx context.Context, in *SetScoresRequest, opts ...grpc.CallOption) (*SetScoresResponse, error)
} }
@@ -84,21 +80,17 @@ func (c *autopilotClient) SetScores(ctx context.Context, in *SetScoresRequest, o
// All implementations must embed UnimplementedAutopilotServer // All implementations must embed UnimplementedAutopilotServer
// for forward compatibility // for forward compatibility
type AutopilotServer interface { type AutopilotServer interface {
// // Status returns whether the daemon's autopilot agent is active.
//Status returns whether the daemon's autopilot agent is active.
Status(context.Context, *StatusRequest) (*StatusResponse, error) Status(context.Context, *StatusRequest) (*StatusResponse, error)
// // ModifyStatus is used to modify the status of the autopilot agent, like
//ModifyStatus is used to modify the status of the autopilot agent, like // enabling or disabling it.
//enabling or disabling it.
ModifyStatus(context.Context, *ModifyStatusRequest) (*ModifyStatusResponse, error) ModifyStatus(context.Context, *ModifyStatusRequest) (*ModifyStatusResponse, error)
// // QueryScores queries all available autopilot heuristics, in addition to any
//QueryScores queries all available autopilot heuristics, in addition to any // active combination of these heruristics, for the scores they would give to
//active combination of these heruristics, for the scores they would give to // the given nodes.
//the given nodes.
QueryScores(context.Context, *QueryScoresRequest) (*QueryScoresResponse, error) QueryScores(context.Context, *QueryScoresRequest) (*QueryScoresResponse, error)
// // SetScores attempts to set the scores used by the running autopilot agent,
//SetScores attempts to set the scores used by the running autopilot agent, // if the external scoring heuristic is enabled.
//if the external scoring heuristic is enabled.
SetScores(context.Context, *SetScoresRequest) (*SetScoresResponse, error) SetScores(context.Context, *SetScoresRequest) (*SetScoresResponse, error)
mustEmbedUnimplementedAutopilotServer() mustEmbedUnimplementedAutopilotServer()
} }
+39 -50
View File
@@ -25,29 +25,24 @@ type ConfRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The transaction hash for which we should request a confirmation notification
//The transaction hash for which we should request a confirmation notification // for. If set to a hash of all zeros, then the confirmation notification will
//for. If set to a hash of all zeros, then the confirmation notification will // be requested for the script instead.
//be requested for the script instead.
Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"` Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"`
// // An output script within a transaction with the hash above which will be used
//An output script within a transaction with the hash above which will be used // by light clients to match block filters. If the transaction hash is set to a
//by light clients to match block filters. If the transaction hash is set to a // hash of all zeros, then a confirmation notification will be requested for
//hash of all zeros, then a confirmation notification will be requested for // this script instead.
//this script instead.
Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"` Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"`
// // The number of desired confirmations the transaction/output script should
//The number of desired confirmations the transaction/output script should // reach before dispatching a confirmation notification.
//reach before dispatching a confirmation notification.
NumConfs uint32 `protobuf:"varint,3,opt,name=num_confs,json=numConfs,proto3" json:"num_confs,omitempty"` NumConfs uint32 `protobuf:"varint,3,opt,name=num_confs,json=numConfs,proto3" json:"num_confs,omitempty"`
// // The earliest height in the chain for which the transaction/output script
//The earliest height in the chain for which the transaction/output script // could have been included in a block. This should in most cases be set to the
//could have been included in a block. This should in most cases be set to the // broadcast height of the transaction/output script.
//broadcast height of the transaction/output script.
HeightHint uint32 `protobuf:"varint,4,opt,name=height_hint,json=heightHint,proto3" json:"height_hint,omitempty"` HeightHint uint32 `protobuf:"varint,4,opt,name=height_hint,json=heightHint,proto3" json:"height_hint,omitempty"`
// // If true, then the block that mines the specified txid/script will be
//If true, then the block that mines the specified txid/script will be // included in eventual the notification event.
//included in eventual the notification event.
IncludeBlock bool `protobuf:"varint,5,opt,name=include_block,json=includeBlock,proto3" json:"include_block,omitempty"` IncludeBlock bool `protobuf:"varint,5,opt,name=include_block,json=includeBlock,proto3" json:"include_block,omitempty"`
} }
@@ -132,9 +127,8 @@ type ConfDetails struct {
BlockHeight uint32 `protobuf:"varint,3,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` BlockHeight uint32 `protobuf:"varint,3,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
// The index of the confirmed transaction within the transaction. // The index of the confirmed transaction within the transaction.
TxIndex uint32 `protobuf:"varint,4,opt,name=tx_index,json=txIndex,proto3" json:"tx_index,omitempty"` TxIndex uint32 `protobuf:"varint,4,opt,name=tx_index,json=txIndex,proto3" json:"tx_index,omitempty"`
// // The raw bytes of the block that mined the transaction. Only included if
//The raw bytes of the block that mined the transaction. Only included if // include_block was set in the request.
//include_block was set in the request.
RawBlock []byte `protobuf:"bytes,5,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"` RawBlock []byte `protobuf:"bytes,5,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"`
} }
@@ -249,6 +243,7 @@ type ConfEvent struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Types that are assignable to Event: // Types that are assignable to Event:
//
// *ConfEvent_Conf // *ConfEvent_Conf
// *ConfEvent_Reorg // *ConfEvent_Reorg
Event isConfEvent_Event `protobuf_oneof:"event"` Event isConfEvent_Event `protobuf_oneof:"event"`
@@ -312,16 +307,14 @@ type isConfEvent_Event interface {
} }
type ConfEvent_Conf struct { type ConfEvent_Conf struct {
// // An event that includes the confirmation details of the request
//An event that includes the confirmation details of the request // (txid/ouput script).
//(txid/ouput script).
Conf *ConfDetails `protobuf:"bytes,1,opt,name=conf,proto3,oneof"` Conf *ConfDetails `protobuf:"bytes,1,opt,name=conf,proto3,oneof"`
} }
type ConfEvent_Reorg struct { type ConfEvent_Reorg struct {
// // An event send when the transaction of the request is reorged out of the
//An event send when the transaction of the request is reorged out of the // chain.
//chain.
Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"` Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"`
} }
@@ -391,24 +384,21 @@ type SpendRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The outpoint for which we should request a spend notification for. If set to
//The outpoint for which we should request a spend notification for. If set to // a zero outpoint, then the spend notification will be requested for the
//a zero outpoint, then the spend notification will be requested for the // script instead. A zero or nil outpoint is not supported for Taproot spends
//script instead. A zero or nil outpoint is not supported for Taproot spends // because the output script cannot reliably be computed from the witness alone
//because the output script cannot reliably be computed from the witness alone // and the spent output script is not always available in the rescan context.
//and the spent output script is not always available in the rescan context. // So an outpoint must _always_ be specified when registering a spend
//So an outpoint must _always_ be specified when registering a spend // notification for a Taproot output.
//notification for a Taproot output.
Outpoint *Outpoint `protobuf:"bytes,1,opt,name=outpoint,proto3" json:"outpoint,omitempty"` Outpoint *Outpoint `protobuf:"bytes,1,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
// // The output script for the outpoint above. This will be used by light clients
//The output script for the outpoint above. This will be used by light clients // to match block filters. If the outpoint is set to a zero outpoint, then a
//to match block filters. If the outpoint is set to a zero outpoint, then a // spend notification will be requested for this script instead.
//spend notification will be requested for this script instead.
Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"` Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"`
// // The earliest height in the chain for which the outpoint/output script could
//The earliest height in the chain for which the outpoint/output script could // have been spent. This should in most cases be set to the broadcast height of
//have been spent. This should in most cases be set to the broadcast height of // the outpoint/output script.
//the outpoint/output script.
HeightHint uint32 `protobuf:"varint,3,opt,name=height_hint,json=heightHint,proto3" json:"height_hint,omitempty"` HeightHint uint32 `protobuf:"varint,3,opt,name=height_hint,json=heightHint,proto3" json:"height_hint,omitempty"`
} }
@@ -555,6 +545,7 @@ type SpendEvent struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Types that are assignable to Event: // Types that are assignable to Event:
//
// *SpendEvent_Spend // *SpendEvent_Spend
// *SpendEvent_Reorg // *SpendEvent_Reorg
Event isSpendEvent_Event `protobuf_oneof:"event"` Event isSpendEvent_Event `protobuf_oneof:"event"`
@@ -618,16 +609,14 @@ type isSpendEvent_Event interface {
} }
type SpendEvent_Spend struct { type SpendEvent_Spend struct {
// // An event that includes the details of the spending transaction of the
//An event that includes the details of the spending transaction of the // request (outpoint/output script).
//request (outpoint/output script).
Spend *SpendDetails `protobuf:"bytes,1,opt,name=spend,proto3,oneof"` Spend *SpendDetails `protobuf:"bytes,1,opt,name=spend,proto3,oneof"`
} }
type SpendEvent_Reorg struct { type SpendEvent_Reorg struct {
// // An event sent when the spending transaction of the request was
//An event sent when the spending transaction of the request was // reorged out of the chain.
//reorged out of the chain.
Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"` Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"`
} }
+42 -48
View File
@@ -18,35 +18,32 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type ChainNotifierClient interface { type ChainNotifierClient interface {
// 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.
// //
//RegisterConfirmationsNtfn is a synchronous response-streaming RPC that // A confirmation request must have a valid output script. It is also possible
//registers an intent for a client to be notified once a confirmation request // to give a transaction ID. If the transaction ID is not set, a notification
//has reached its required number of confirmations on-chain. // is sent once the output script confirms. If the transaction ID is also set,
// // a notification is sent once the output script confirms in the given
//A confirmation request must have a valid output script. It is also possible // transaction.
//to give a transaction ID. If the transaction ID is not set, a notification
//is sent once the output script confirms. If the transaction ID is also set,
//a notification is sent once the output script confirms in the given
//transaction.
RegisterConfirmationsNtfn(ctx context.Context, in *ConfRequest, opts ...grpc.CallOption) (ChainNotifier_RegisterConfirmationsNtfnClient, error) RegisterConfirmationsNtfn(ctx context.Context, in *ConfRequest, opts ...grpc.CallOption) (ChainNotifier_RegisterConfirmationsNtfnClient, error)
// 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.
// //
//RegisterSpendNtfn is a synchronous response-streaming RPC that registers an // A client can specify whether the spend request should be for a particular
//intent for a client to be notification once a spend request has been spent // outpoint or for an output script by specifying a zero outpoint.
//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.
RegisterSpendNtfn(ctx context.Context, in *SpendRequest, opts ...grpc.CallOption) (ChainNotifier_RegisterSpendNtfnClient, error) RegisterSpendNtfn(ctx context.Context, in *SpendRequest, opts ...grpc.CallOption) (ChainNotifier_RegisterSpendNtfnClient, error)
// 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.
// //
//RegisterBlockEpochNtfn is a synchronous response-streaming RPC that // A client can also request a historical backlog of blocks from a particular
//registers an intent for a client to be notified of blocks in the chain. The // point. This allows clients to be idempotent by ensuring that they do not
//stream will return a hash and height tuple of a block for each new/stale // missing processing a single block within the chain.
//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.
RegisterBlockEpochNtfn(ctx context.Context, in *BlockEpoch, opts ...grpc.CallOption) (ChainNotifier_RegisterBlockEpochNtfnClient, error) RegisterBlockEpochNtfn(ctx context.Context, in *BlockEpoch, opts ...grpc.CallOption) (ChainNotifier_RegisterBlockEpochNtfnClient, error)
} }
@@ -158,35 +155,32 @@ func (x *chainNotifierRegisterBlockEpochNtfnClient) Recv() (*BlockEpoch, error)
// All implementations must embed UnimplementedChainNotifierServer // All implementations must embed UnimplementedChainNotifierServer
// for forward compatibility // for forward compatibility
type ChainNotifierServer interface { type ChainNotifierServer interface {
// 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.
// //
//RegisterConfirmationsNtfn is a synchronous response-streaming RPC that // A confirmation request must have a valid output script. It is also possible
//registers an intent for a client to be notified once a confirmation request // to give a transaction ID. If the transaction ID is not set, a notification
//has reached its required number of confirmations on-chain. // is sent once the output script confirms. If the transaction ID is also set,
// // a notification is sent once the output script confirms in the given
//A confirmation request must have a valid output script. It is also possible // transaction.
//to give a transaction ID. If the transaction ID is not set, a notification
//is sent once the output script confirms. If the transaction ID is also set,
//a notification is sent once the output script confirms in the given
//transaction.
RegisterConfirmationsNtfn(*ConfRequest, ChainNotifier_RegisterConfirmationsNtfnServer) error RegisterConfirmationsNtfn(*ConfRequest, ChainNotifier_RegisterConfirmationsNtfnServer) error
// 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.
// //
//RegisterSpendNtfn is a synchronous response-streaming RPC that registers an // A client can specify whether the spend request should be for a particular
//intent for a client to be notification once a spend request has been spent // outpoint or for an output script by specifying a zero outpoint.
//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.
RegisterSpendNtfn(*SpendRequest, ChainNotifier_RegisterSpendNtfnServer) error RegisterSpendNtfn(*SpendRequest, ChainNotifier_RegisterSpendNtfnServer) error
// 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.
// //
//RegisterBlockEpochNtfn is a synchronous response-streaming RPC that // A client can also request a historical backlog of blocks from a particular
//registers an intent for a client to be notified of blocks in the chain. The // point. This allows clients to be idempotent by ensuring that they do not
//stream will return a hash and height tuple of a block for each new/stale // missing processing a single block within the chain.
//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.
RegisterBlockEpochNtfn(*BlockEpoch, ChainNotifier_RegisterBlockEpochNtfnServer) error RegisterBlockEpochNtfn(*BlockEpoch, ChainNotifier_RegisterBlockEpochNtfnServer) error
mustEmbedUnimplementedChainNotifierServer() mustEmbedUnimplementedChainNotifierServer()
} }
+4 -6
View File
@@ -19,9 +19,8 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type DevClient interface { type DevClient interface {
// // ImportGraph imports a ChannelGraph into the graph database. Should only be
//ImportGraph imports a ChannelGraph into the graph database. Should only be // used for development.
//used for development.
ImportGraph(ctx context.Context, in *lnrpc.ChannelGraph, opts ...grpc.CallOption) (*ImportGraphResponse, error) ImportGraph(ctx context.Context, in *lnrpc.ChannelGraph, opts ...grpc.CallOption) (*ImportGraphResponse, error)
} }
@@ -46,9 +45,8 @@ func (c *devClient) ImportGraph(ctx context.Context, in *lnrpc.ChannelGraph, opt
// All implementations must embed UnimplementedDevServer // All implementations must embed UnimplementedDevServer
// for forward compatibility // for forward compatibility
type DevServer interface { type DevServer interface {
// // ImportGraph imports a ChannelGraph into the graph database. Should only be
//ImportGraph imports a ChannelGraph into the graph database. Should only be // used for development.
//used for development.
ImportGraph(context.Context, *lnrpc.ChannelGraph) (*ImportGraphResponse, error) ImportGraph(context.Context, *lnrpc.ChannelGraph) (*ImportGraphResponse, error)
mustEmbedUnimplementedDevServer() mustEmbedUnimplementedDevServer()
} }
+30 -39
View File
@@ -26,15 +26,13 @@ type LookupModifier int32
const ( const (
// The default look up modifier, no look up behavior is changed. // The default look up modifier, no look up behavior is changed.
LookupModifier_DEFAULT LookupModifier = 0 LookupModifier_DEFAULT LookupModifier = 0
// // Indicates that when a look up is done based on a set_id, then only that set
//Indicates that when a look up is done based on a set_id, then only that set // of HTLCs related to that set ID should be returned.
//of HTLCs related to that set ID should be returned.
LookupModifier_HTLC_SET_ONLY LookupModifier = 1 LookupModifier_HTLC_SET_ONLY LookupModifier = 1
// // Indicates that when a look up is done using a payment_addr, then no HTLCs
//Indicates that when a look up is done using a payment_addr, then no HTLCs // related to the payment_addr should be returned. This is useful when one
//related to the payment_addr should be returned. This is useful when one // wants to be able to obtain the set of associated setIDs with a given
//wants to be able to obtain the set of associated setIDs with a given // invoice, then look up the sub-invoices "projected" by that set ID.
//invoice, then look up the sub-invoices "projected" by that set ID.
LookupModifier_HTLC_SET_BLANK LookupModifier = 2 LookupModifier_HTLC_SET_BLANK LookupModifier = 2
) )
@@ -171,28 +169,24 @@ type AddHoldInvoiceRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // An optional memo to attach along with the invoice. Used for record keeping
//An optional memo to attach along with the invoice. Used for record keeping // purposes for the invoice's creator, and will also be set in the description
//purposes for the invoice's creator, and will also be set in the description // field of the encoded payment request if the description_hash field is not
//field of the encoded payment request if the description_hash field is not // being used.
//being used.
Memo string `protobuf:"bytes,1,opt,name=memo,proto3" json:"memo,omitempty"` Memo string `protobuf:"bytes,1,opt,name=memo,proto3" json:"memo,omitempty"`
// The hash of the preimage // The hash of the preimage
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
// The value of this invoice in satoshis
// //
//The value of this invoice in satoshis // The fields value and value_msat are mutually exclusive.
//
//The fields value and value_msat are mutually exclusive.
Value int64 `protobuf:"varint,3,opt,name=value,proto3" json:"value,omitempty"` Value int64 `protobuf:"varint,3,opt,name=value,proto3" json:"value,omitempty"`
// The value of this invoice in millisatoshis
// //
//The value of this invoice in millisatoshis // The fields value and value_msat are mutually exclusive.
//
//The fields value and value_msat are mutually exclusive.
ValueMsat int64 `protobuf:"varint,10,opt,name=value_msat,json=valueMsat,proto3" json:"value_msat,omitempty"` ValueMsat int64 `protobuf:"varint,10,opt,name=value_msat,json=valueMsat,proto3" json:"value_msat,omitempty"`
// // Hash (SHA-256) of a description of the payment. Used if the description of
//Hash (SHA-256) of a description of the payment. Used if the description of // payment (memo) is too long to naturally fit within the description field
//payment (memo) is too long to naturally fit within the description field // of an encoded payment request.
//of an encoded payment request.
DescriptionHash []byte `protobuf:"bytes,4,opt,name=description_hash,json=descriptionHash,proto3" json:"description_hash,omitempty"` DescriptionHash []byte `protobuf:"bytes,4,opt,name=description_hash,json=descriptionHash,proto3" json:"description_hash,omitempty"`
// Payment request expiry time in seconds. Default is 3600 (1 hour). // Payment request expiry time in seconds. Default is 3600 (1 hour).
Expiry int64 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"` Expiry int64 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"`
@@ -200,9 +194,8 @@ type AddHoldInvoiceRequest struct {
FallbackAddr string `protobuf:"bytes,6,opt,name=fallback_addr,json=fallbackAddr,proto3" json:"fallback_addr,omitempty"` FallbackAddr string `protobuf:"bytes,6,opt,name=fallback_addr,json=fallbackAddr,proto3" json:"fallback_addr,omitempty"`
// Delta to use for the time-lock of the CLTV extended to the final hop. // Delta to use for the time-lock of the CLTV extended to the final hop.
CltvExpiry uint64 `protobuf:"varint,7,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"` CltvExpiry uint64 `protobuf:"varint,7,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"`
// // Route hints that can each be individually used to assist in reaching the
//Route hints that can each be individually used to assist in reaching the // invoice's destination.
//invoice's destination.
RouteHints []*lnrpc.RouteHint `protobuf:"bytes,8,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"` RouteHints []*lnrpc.RouteHint `protobuf:"bytes,8,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
// Whether this invoice should include routing hints for private channels. // Whether this invoice should include routing hints for private channels.
Private bool `protobuf:"varint,9,opt,name=private,proto3" json:"private,omitempty"` Private bool `protobuf:"varint,9,opt,name=private,proto3" json:"private,omitempty"`
@@ -315,21 +308,18 @@ type AddHoldInvoiceResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A bare-bones invoice for a payment within the Lightning Network. With the
//A bare-bones invoice for a payment within the Lightning Network. With the // details of the invoice, the sender has all the data necessary to send a
//details of the invoice, the sender has all the data necessary to send a // payment to the recipient.
//payment to the recipient.
PaymentRequest string `protobuf:"bytes,1,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"` PaymentRequest string `protobuf:"bytes,1,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
// // The "add" index of this invoice. Each newly created invoice will increment
//The "add" index of this invoice. Each newly created invoice will increment // this index making it monotonically increasing. Callers to the
//this index making it monotonically increasing. Callers to the // SubscribeInvoices call can use this to instantly get notified of all added
//SubscribeInvoices call can use this to instantly get notified of all added // invoices with an add_index greater than this one.
//invoices with an add_index greater than this one.
AddIndex uint64 `protobuf:"varint,2,opt,name=add_index,json=addIndex,proto3" json:"add_index,omitempty"` AddIndex uint64 `protobuf:"varint,2,opt,name=add_index,json=addIndex,proto3" json:"add_index,omitempty"`
// // The payment address of the generated invoice. This value should be used
//The payment address of the generated invoice. This value should be used // in all payments for this invoice as we require it for end to end
//in all payments for this invoice as we require it for end to end // security.
//security.
PaymentAddr []byte `protobuf:"bytes,3,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"` PaymentAddr []byte `protobuf:"bytes,3,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
} }
@@ -528,6 +518,7 @@ type LookupInvoiceMsg struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Types that are assignable to InvoiceRef: // Types that are assignable to InvoiceRef:
//
// *LookupInvoiceMsg_PaymentHash // *LookupInvoiceMsg_PaymentHash
// *LookupInvoiceMsg_PaymentAddr // *LookupInvoiceMsg_PaymentAddr
// *LookupInvoiceMsg_SetId // *LookupInvoiceMsg_SetId
+24 -34
View File
@@ -19,27 +19,22 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type InvoicesClient interface { type InvoicesClient interface {
// // SubscribeSingleInvoice returns a uni-directional stream (server -> client)
//SubscribeSingleInvoice returns a uni-directional stream (server -> client) // to notify the client of state transitions of the specified invoice.
//to notify the client of state transitions of the specified invoice. // Initially the current invoice state is always sent out.
//Initially the current invoice state is always sent out.
SubscribeSingleInvoice(ctx context.Context, in *SubscribeSingleInvoiceRequest, opts ...grpc.CallOption) (Invoices_SubscribeSingleInvoiceClient, error) SubscribeSingleInvoice(ctx context.Context, in *SubscribeSingleInvoiceRequest, opts ...grpc.CallOption) (Invoices_SubscribeSingleInvoiceClient, error)
// // CancelInvoice cancels a currently open invoice. If the invoice is already
//CancelInvoice cancels a currently open invoice. If the invoice is already // canceled, this call will succeed. If the invoice is already settled, it will
//canceled, this call will succeed. If the invoice is already settled, it will // fail.
//fail.
CancelInvoice(ctx context.Context, in *CancelInvoiceMsg, opts ...grpc.CallOption) (*CancelInvoiceResp, error) CancelInvoice(ctx context.Context, in *CancelInvoiceMsg, opts ...grpc.CallOption) (*CancelInvoiceResp, error)
// // AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
//AddHoldInvoice creates a hold invoice. It ties the invoice to the hash // supplied in the request.
//supplied in the request.
AddHoldInvoice(ctx context.Context, in *AddHoldInvoiceRequest, opts ...grpc.CallOption) (*AddHoldInvoiceResp, error) AddHoldInvoice(ctx context.Context, in *AddHoldInvoiceRequest, opts ...grpc.CallOption) (*AddHoldInvoiceResp, error)
// // SettleInvoice settles an accepted invoice. If the invoice is already
//SettleInvoice settles an accepted invoice. If the invoice is already // settled, this call will succeed.
//settled, this call will succeed.
SettleInvoice(ctx context.Context, in *SettleInvoiceMsg, opts ...grpc.CallOption) (*SettleInvoiceResp, error) SettleInvoice(ctx context.Context, in *SettleInvoiceMsg, opts ...grpc.CallOption) (*SettleInvoiceResp, error)
// // LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced
//LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced // using either its payment hash, payment address, or set ID.
//using either its payment hash, payment address, or set ID.
LookupInvoiceV2(ctx context.Context, in *LookupInvoiceMsg, opts ...grpc.CallOption) (*lnrpc.Invoice, error) LookupInvoiceV2(ctx context.Context, in *LookupInvoiceMsg, opts ...grpc.CallOption) (*lnrpc.Invoice, error)
} }
@@ -123,27 +118,22 @@ func (c *invoicesClient) LookupInvoiceV2(ctx context.Context, in *LookupInvoiceM
// All implementations must embed UnimplementedInvoicesServer // All implementations must embed UnimplementedInvoicesServer
// for forward compatibility // for forward compatibility
type InvoicesServer interface { type InvoicesServer interface {
// // SubscribeSingleInvoice returns a uni-directional stream (server -> client)
//SubscribeSingleInvoice returns a uni-directional stream (server -> client) // to notify the client of state transitions of the specified invoice.
//to notify the client of state transitions of the specified invoice. // Initially the current invoice state is always sent out.
//Initially the current invoice state is always sent out.
SubscribeSingleInvoice(*SubscribeSingleInvoiceRequest, Invoices_SubscribeSingleInvoiceServer) error SubscribeSingleInvoice(*SubscribeSingleInvoiceRequest, Invoices_SubscribeSingleInvoiceServer) error
// // CancelInvoice cancels a currently open invoice. If the invoice is already
//CancelInvoice cancels a currently open invoice. If the invoice is already // canceled, this call will succeed. If the invoice is already settled, it will
//canceled, this call will succeed. If the invoice is already settled, it will // fail.
//fail.
CancelInvoice(context.Context, *CancelInvoiceMsg) (*CancelInvoiceResp, error) CancelInvoice(context.Context, *CancelInvoiceMsg) (*CancelInvoiceResp, error)
// // AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
//AddHoldInvoice creates a hold invoice. It ties the invoice to the hash // supplied in the request.
//supplied in the request.
AddHoldInvoice(context.Context, *AddHoldInvoiceRequest) (*AddHoldInvoiceResp, error) AddHoldInvoice(context.Context, *AddHoldInvoiceRequest) (*AddHoldInvoiceResp, error)
// // SettleInvoice settles an accepted invoice. If the invoice is already
//SettleInvoice settles an accepted invoice. If the invoice is already // settled, this call will succeed.
//settled, this call will succeed.
SettleInvoice(context.Context, *SettleInvoiceMsg) (*SettleInvoiceResp, error) SettleInvoice(context.Context, *SettleInvoiceMsg) (*SettleInvoiceResp, error)
// // LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced
//LookupInvoiceV2 attempts to look up at invoice. An invoice can be refrenced // using either its payment hash, payment address, or set ID.
//using either its payment hash, payment address, or set ID.
LookupInvoiceV2(context.Context, *LookupInvoiceMsg) (*lnrpc.Invoice, error) LookupInvoiceV2(context.Context, *LookupInvoiceMsg) (*lnrpc.Invoice, error)
mustEmbedUnimplementedInvoicesServer() mustEmbedUnimplementedInvoicesServer()
} }
+838 -1117
View File
File diff suppressed because it is too large. Load diff
+520 -554
View File
File diff suppressed because it is too large. Load diff
+24 -40
View File
@@ -18,33 +18,25 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type NeutrinoKitClient interface { type NeutrinoKitClient interface {
// // Status returns the status of the light client neutrino instance,
//Status returns the status of the light client neutrino instance, // along with height and hash of the best block, and a list of connected
//along with height and hash of the best block, and a list of connected // peers.
//peers.
Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error)
// // AddPeer adds a new peer that has already been connected to the server.
//AddPeer adds a new peer that has already been connected to the server.
AddPeer(ctx context.Context, in *AddPeerRequest, opts ...grpc.CallOption) (*AddPeerResponse, error) AddPeer(ctx context.Context, in *AddPeerRequest, opts ...grpc.CallOption) (*AddPeerResponse, error)
// // DisconnectPeer disconnects a peer by target address. Both outbound and
//DisconnectPeer disconnects a peer by target address. Both outbound and // inbound nodes will be searched for the target node. An error message will
//inbound nodes will be searched for the target node. An error message will // be returned if the peer was not found.
//be returned if the peer was not found.
DisconnectPeer(ctx context.Context, in *DisconnectPeerRequest, opts ...grpc.CallOption) (*DisconnectPeerResponse, error) DisconnectPeer(ctx context.Context, in *DisconnectPeerRequest, opts ...grpc.CallOption) (*DisconnectPeerResponse, error)
// // IsBanned returns true if the peer is banned, otherwise false.
//IsBanned returns true if the peer is banned, otherwise false.
IsBanned(ctx context.Context, in *IsBannedRequest, opts ...grpc.CallOption) (*IsBannedResponse, error) IsBanned(ctx context.Context, in *IsBannedRequest, opts ...grpc.CallOption) (*IsBannedResponse, error)
// // GetBlockHeader returns a block header with a particular block hash.
//GetBlockHeader returns a block header with a particular block hash.
GetBlockHeader(ctx context.Context, in *GetBlockHeaderRequest, opts ...grpc.CallOption) (*GetBlockHeaderResponse, error) GetBlockHeader(ctx context.Context, in *GetBlockHeaderRequest, opts ...grpc.CallOption) (*GetBlockHeaderResponse, error)
// // GetBlock returns a block with a particular block hash.
//GetBlock returns a block with a particular block hash.
GetBlock(ctx context.Context, in *GetBlockRequest, opts ...grpc.CallOption) (*GetBlockResponse, error) GetBlock(ctx context.Context, in *GetBlockRequest, opts ...grpc.CallOption) (*GetBlockResponse, error)
// // GetCFilter returns a compact filter from a block.
//GetCFilter returns a compact filter from a block.
GetCFilter(ctx context.Context, in *GetCFilterRequest, opts ...grpc.CallOption) (*GetCFilterResponse, error) GetCFilter(ctx context.Context, in *GetCFilterRequest, opts ...grpc.CallOption) (*GetCFilterResponse, error)
// // GetBlockHash returns the header hash of a block at a given height.
//GetBlockHash returns the header hash of a block at a given height.
GetBlockHash(ctx context.Context, in *GetBlockHashRequest, opts ...grpc.CallOption) (*GetBlockHashResponse, error) GetBlockHash(ctx context.Context, in *GetBlockHashRequest, opts ...grpc.CallOption) (*GetBlockHashResponse, error)
} }
@@ -132,33 +124,25 @@ func (c *neutrinoKitClient) GetBlockHash(ctx context.Context, in *GetBlockHashRe
// All implementations must embed UnimplementedNeutrinoKitServer // All implementations must embed UnimplementedNeutrinoKitServer
// for forward compatibility // for forward compatibility
type NeutrinoKitServer interface { type NeutrinoKitServer interface {
// // Status returns the status of the light client neutrino instance,
//Status returns the status of the light client neutrino instance, // along with height and hash of the best block, and a list of connected
//along with height and hash of the best block, and a list of connected // peers.
//peers.
Status(context.Context, *StatusRequest) (*StatusResponse, error) Status(context.Context, *StatusRequest) (*StatusResponse, error)
// // AddPeer adds a new peer that has already been connected to the server.
//AddPeer adds a new peer that has already been connected to the server.
AddPeer(context.Context, *AddPeerRequest) (*AddPeerResponse, error) AddPeer(context.Context, *AddPeerRequest) (*AddPeerResponse, error)
// // DisconnectPeer disconnects a peer by target address. Both outbound and
//DisconnectPeer disconnects a peer by target address. Both outbound and // inbound nodes will be searched for the target node. An error message will
//inbound nodes will be searched for the target node. An error message will // be returned if the peer was not found.
//be returned if the peer was not found.
DisconnectPeer(context.Context, *DisconnectPeerRequest) (*DisconnectPeerResponse, error) DisconnectPeer(context.Context, *DisconnectPeerRequest) (*DisconnectPeerResponse, error)
// // IsBanned returns true if the peer is banned, otherwise false.
//IsBanned returns true if the peer is banned, otherwise false.
IsBanned(context.Context, *IsBannedRequest) (*IsBannedResponse, error) IsBanned(context.Context, *IsBannedRequest) (*IsBannedResponse, error)
// // GetBlockHeader returns a block header with a particular block hash.
//GetBlockHeader returns a block header with a particular block hash.
GetBlockHeader(context.Context, *GetBlockHeaderRequest) (*GetBlockHeaderResponse, error) GetBlockHeader(context.Context, *GetBlockHeaderRequest) (*GetBlockHeaderResponse, error)
// // GetBlock returns a block with a particular block hash.
//GetBlock returns a block with a particular block hash.
GetBlock(context.Context, *GetBlockRequest) (*GetBlockResponse, error) GetBlock(context.Context, *GetBlockRequest) (*GetBlockResponse, error)
// // GetCFilter returns a compact filter from a block.
//GetCFilter returns a compact filter from a block.
GetCFilter(context.Context, *GetCFilterRequest) (*GetCFilterResponse, error) GetCFilter(context.Context, *GetCFilterRequest) (*GetCFilterResponse, error)
// // GetBlockHash returns the header hash of a block at a given height.
//GetBlockHash returns the header hash of a block at a given height.
GetBlockHash(context.Context, *GetBlockHashRequest) (*GetBlockHashResponse, error) GetBlockHash(context.Context, *GetBlockHashRequest) (*GetBlockHashResponse, error)
mustEmbedUnimplementedNeutrinoKitServer() mustEmbedUnimplementedNeutrinoKitServer()
} }
+11 -16
View File
@@ -73,26 +73,21 @@ func (UpdateAction) EnumDescriptor() ([]byte, []int) {
type FeatureSet int32 type FeatureSet int32
const ( const (
// // SET_INIT identifies features that should be sent in an Init message to
//SET_INIT identifies features that should be sent in an Init message to // a remote peer.
//a remote peer.
FeatureSet_SET_INIT FeatureSet = 0 FeatureSet_SET_INIT FeatureSet = 0
// // SET_LEGACY_GLOBAL identifies features that should be set in the legacy
//SET_LEGACY_GLOBAL identifies features that should be set in the legacy // GlobalFeatures field of an Init message, which maintains backwards
//GlobalFeatures field of an Init message, which maintains backwards // compatibility with nodes that haven't implemented flat features.
//compatibility with nodes that haven't implemented flat features.
FeatureSet_SET_LEGACY_GLOBAL FeatureSet = 1 FeatureSet_SET_LEGACY_GLOBAL FeatureSet = 1
// // SET_NODE_ANN identifies features that should be advertised on node
//SET_NODE_ANN identifies features that should be advertised on node // announcements.
//announcements.
FeatureSet_SET_NODE_ANN FeatureSet = 2 FeatureSet_SET_NODE_ANN FeatureSet = 2
// // SET_INVOICE identifies features that should be advertised on invoices
//SET_INVOICE identifies features that should be advertised on invoices // generated by the daemon.
//generated by the daemon.
FeatureSet_SET_INVOICE FeatureSet = 3 FeatureSet_SET_INVOICE FeatureSet = 3
// // SET_INVOICE_AMP identifies the features that should be advertised on
//SET_INVOICE_AMP identifies the features that should be advertised on // AMP invoices generated by the daemon.
//AMP invoices generated by the daemon.
FeatureSet_SET_INVOICE_AMP FeatureSet = 4 FeatureSet_SET_INVOICE_AMP FeatureSet = 4
) )
+4 -4
View File
@@ -19,8 +19,8 @@ const _ = grpc.SupportPackageIsVersion7
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type PeersClient interface { type PeersClient interface {
// lncli: peers updatenodeannouncement // lncli: peers updatenodeannouncement
//UpdateNodeAnnouncement allows the caller to update the node parameters // UpdateNodeAnnouncement allows the caller to update the node parameters
//and broadcasts a new version of the node announcement to its peers. // and broadcasts a new version of the node announcement to its peers.
UpdateNodeAnnouncement(ctx context.Context, in *NodeAnnouncementUpdateRequest, opts ...grpc.CallOption) (*NodeAnnouncementUpdateResponse, error) UpdateNodeAnnouncement(ctx context.Context, in *NodeAnnouncementUpdateRequest, opts ...grpc.CallOption) (*NodeAnnouncementUpdateResponse, error)
} }
@@ -46,8 +46,8 @@ func (c *peersClient) UpdateNodeAnnouncement(ctx context.Context, in *NodeAnnoun
// for forward compatibility // for forward compatibility
type PeersServer interface { type PeersServer interface {
// lncli: peers updatenodeannouncement // lncli: peers updatenodeannouncement
//UpdateNodeAnnouncement allows the caller to update the node parameters // UpdateNodeAnnouncement allows the caller to update the node parameters
//and broadcasts a new version of the node announcement to its peers. // and broadcasts a new version of the node announcement to its peers.
UpdateNodeAnnouncement(context.Context, *NodeAnnouncementUpdateRequest) (*NodeAnnouncementUpdateResponse, error) UpdateNodeAnnouncement(context.Context, *NodeAnnouncementUpdateRequest) (*NodeAnnouncementUpdateResponse, error)
mustEmbedUnimplementedPeersServer() mustEmbedUnimplementedPeersServer()
} }
+151 -208
View File
@@ -133,28 +133,21 @@ func (FailureDetail) EnumDescriptor() ([]byte, []int) {
type PaymentState int32 type PaymentState int32
const ( const (
// // Payment is still in flight.
//Payment is still in flight.
PaymentState_IN_FLIGHT PaymentState = 0 PaymentState_IN_FLIGHT PaymentState = 0
// // Payment completed successfully.
//Payment completed successfully.
PaymentState_SUCCEEDED PaymentState = 1 PaymentState_SUCCEEDED PaymentState = 1
// // There are more routes to try, but the payment timeout was exceeded.
//There are more routes to try, but the payment timeout was exceeded.
PaymentState_FAILED_TIMEOUT PaymentState = 2 PaymentState_FAILED_TIMEOUT PaymentState = 2
// // All possible routes were tried and failed permanently. Or were no
//All possible routes were tried and failed permanently. Or were no // routes to the destination at all.
//routes to the destination at all.
PaymentState_FAILED_NO_ROUTE PaymentState = 3 PaymentState_FAILED_NO_ROUTE PaymentState = 3
// // A non-recoverable error has occurred.
//A non-recoverable error has occurred.
PaymentState_FAILED_ERROR PaymentState = 4 PaymentState_FAILED_ERROR PaymentState = 4
// // Payment details incorrect (unknown hash, invalid amt or
//Payment details incorrect (unknown hash, invalid amt or // invalid final cltv delta)
//invalid final cltv delta)
PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5 PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5
// // Insufficient local balance.
//Insufficient local balance.
PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6 PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6
) )
@@ -364,112 +357,93 @@ type SendPaymentRequest struct {
// The identity pubkey of the payment recipient // The identity pubkey of the payment recipient
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"` Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
// Number of satoshis to send.
// //
//Number of satoshis to send. // The fields amt and amt_msat are mutually exclusive.
//
//The fields amt and amt_msat are mutually exclusive.
Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"` Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"`
// Number of millisatoshis to send.
// //
//Number of millisatoshis to send. // The fields amt and amt_msat are mutually exclusive.
//
//The fields amt and amt_msat are mutually exclusive.
AmtMsat int64 `protobuf:"varint,12,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"` AmtMsat int64 `protobuf:"varint,12,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
// The hash to use within the payment's HTLC // The hash to use within the payment's HTLC
PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
// // The CLTV delta from the current height that should be used to set the
//The CLTV delta from the current height that should be used to set the // timelock for the final hop.
//timelock for the final hop.
FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"` FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
// An optional payment addr to be included within the last hop of the route. // An optional payment addr to be included within the last hop of the route.
PaymentAddr []byte `protobuf:"bytes,20,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"` PaymentAddr []byte `protobuf:"bytes,20,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
// // A bare-bones invoice for a payment within the Lightning Network. With the
//A bare-bones invoice for a payment within the Lightning Network. With the // details of the invoice, the sender has all the data necessary to send a
//details of the invoice, the sender has all the data necessary to send a // payment to the recipient. The amount in the payment request may be zero. In
//payment to the recipient. The amount in the payment request may be zero. In // that case it is required to set the amt field as well. If no payment request
//that case it is required to set the amt field as well. If no payment request // is specified, the following fields are required: dest, amt and payment_hash.
//is specified, the following fields are required: dest, amt and payment_hash.
PaymentRequest string `protobuf:"bytes,5,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"` PaymentRequest string `protobuf:"bytes,5,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
// // An upper limit on the amount of time we should spend when attempting to
//An upper limit on the amount of time we should spend when attempting to // fulfill the payment. This is expressed in seconds. If we cannot make a
//fulfill the payment. This is expressed in seconds. If we cannot make a // successful payment within this time frame, an error will be returned.
//successful payment within this time frame, an error will be returned. // This field must be non-zero.
//This field must be non-zero.
TimeoutSeconds int32 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` TimeoutSeconds int32 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
// The maximum number of satoshis that will be paid as a fee of the payment.
// If this field is left to the default value of 0, only zero-fee routes will
// be considered. This usually means single hop routes connecting directly to
// the destination. To send the payment without a fee limit, use max int here.
// //
//The maximum number of satoshis that will be paid as a fee of the payment. // The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
//If this field is left to the default value of 0, only zero-fee routes will
//be considered. This usually means single hop routes connecting directly to
//the destination. To send the payment without a fee limit, use max int here.
//
//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
FeeLimitSat int64 `protobuf:"varint,7,opt,name=fee_limit_sat,json=feeLimitSat,proto3" json:"fee_limit_sat,omitempty"` FeeLimitSat int64 `protobuf:"varint,7,opt,name=fee_limit_sat,json=feeLimitSat,proto3" json:"fee_limit_sat,omitempty"`
// The maximum number of millisatoshis that will be paid as a fee of the
// payment. If this field is left to the default value of 0, only zero-fee
// routes will be considered. This usually means single hop routes connecting
// directly to the destination. To send the payment without a fee limit, use
// max int here.
// //
//The maximum number of millisatoshis that will be paid as a fee of the // The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
//payment. If this field is left to the default value of 0, only zero-fee
//routes will be considered. This usually means single hop routes connecting
//directly to the destination. To send the payment without a fee limit, use
//max int here.
//
//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
FeeLimitMsat int64 `protobuf:"varint,13,opt,name=fee_limit_msat,json=feeLimitMsat,proto3" json:"fee_limit_msat,omitempty"` FeeLimitMsat int64 `protobuf:"varint,13,opt,name=fee_limit_msat,json=feeLimitMsat,proto3" json:"fee_limit_msat,omitempty"`
// // Deprecated, use outgoing_chan_ids. The channel id of the channel that must
//Deprecated, use outgoing_chan_ids. The channel id of the channel that must // be taken to the first hop. If zero, any channel may be used (unless
//be taken to the first hop. If zero, any channel may be used (unless // outgoing_chan_ids are set).
//outgoing_chan_ids are set).
// //
// Deprecated: Do not use. // Deprecated: Do not use.
OutgoingChanId uint64 `protobuf:"varint,8,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"` OutgoingChanId uint64 `protobuf:"varint,8,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
// // The channel ids of the channels are allowed for the first hop. If empty,
//The channel ids of the channels are allowed for the first hop. If empty, // any channel may be used.
//any channel may be used.
OutgoingChanIds []uint64 `protobuf:"varint,19,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"` OutgoingChanIds []uint64 `protobuf:"varint,19,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"`
// // The pubkey of the last hop of the route. If empty, any hop may be used.
//The pubkey of the last hop of the route. If empty, any hop may be used.
LastHopPubkey []byte `protobuf:"bytes,14,opt,name=last_hop_pubkey,json=lastHopPubkey,proto3" json:"last_hop_pubkey,omitempty"` LastHopPubkey []byte `protobuf:"bytes,14,opt,name=last_hop_pubkey,json=lastHopPubkey,proto3" json:"last_hop_pubkey,omitempty"`
// // An optional maximum total time lock for the route. This should not exceed
//An optional maximum total time lock for the route. This should not exceed // lnd's `--max-cltv-expiry` setting. If zero, then the value of
//lnd's `--max-cltv-expiry` setting. If zero, then the value of // `--max-cltv-expiry` is enforced.
//`--max-cltv-expiry` is enforced.
CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"` CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"`
// // Optional route hints to reach the destination through private channels.
//Optional route hints to reach the destination through private channels.
RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"` RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
// // An optional field that can be used to pass an arbitrary set of TLV records
//An optional field that can be used to pass an arbitrary set of TLV records // to a peer which understands the new records. This can be used to pass
//to a peer which understands the new records. This can be used to pass // application specific data during the payment attempt. Record types are
//application specific data during the payment attempt. Record types are // required to be in the custom range >= 65536. When using REST, the values
//required to be in the custom range >= 65536. When using REST, the values // must be encoded as base64.
//must be encoded as base64.
DestCustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=dest_custom_records,json=destCustomRecords,proto3" json:"dest_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` DestCustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=dest_custom_records,json=destCustomRecords,proto3" json:"dest_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// If set, circular payments to self are permitted. // If set, circular payments to self are permitted.
AllowSelfPayment bool `protobuf:"varint,15,opt,name=allow_self_payment,json=allowSelfPayment,proto3" json:"allow_self_payment,omitempty"` AllowSelfPayment bool `protobuf:"varint,15,opt,name=allow_self_payment,json=allowSelfPayment,proto3" json:"allow_self_payment,omitempty"`
// // Features assumed to be supported by the final node. All transitive feature
//Features assumed to be supported by the final node. All transitive feature // dependencies must also be set properly. For a given feature bit pair, either
//dependencies must also be set properly. For a given feature bit pair, either // optional or remote may be set, but not both. If this field is nil or empty,
//optional or remote may be set, but not both. If this field is nil or empty, // the router will try to load destination features from the graph as a
//the router will try to load destination features from the graph as a // fallback.
//fallback.
DestFeatures []lnrpc.FeatureBit `protobuf:"varint,16,rep,packed,name=dest_features,json=destFeatures,proto3,enum=lnrpc.FeatureBit" json:"dest_features,omitempty"` DestFeatures []lnrpc.FeatureBit `protobuf:"varint,16,rep,packed,name=dest_features,json=destFeatures,proto3,enum=lnrpc.FeatureBit" json:"dest_features,omitempty"`
// // The maximum number of partial payments that may be use to complete the full
//The maximum number of partial payments that may be use to complete the full // amount.
//amount.
MaxParts uint32 `protobuf:"varint,17,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` MaxParts uint32 `protobuf:"varint,17,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"`
// // If set, only the final payment update is streamed back. Intermediate updates
//If set, only the final payment update is streamed back. Intermediate updates // that show which htlcs are still in flight are suppressed.
//that show which htlcs are still in flight are suppressed.
NoInflightUpdates bool `protobuf:"varint,18,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"` NoInflightUpdates bool `protobuf:"varint,18,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"`
// // The largest payment split that should be attempted when making a payment if
//The largest payment split that should be attempted when making a payment if // splitting is necessary. Setting this value will effectively cause lnd to
//splitting is necessary. Setting this value will effectively cause lnd to // split more aggressively, vs only when it thinks it needs to. Note that this
//split more aggressively, vs only when it thinks it needs to. Note that this // value is in milli-satoshis.
//value is in milli-satoshis.
MaxShardSizeMsat uint64 `protobuf:"varint,21,opt,name=max_shard_size_msat,json=maxShardSizeMsat,proto3" json:"max_shard_size_msat,omitempty"` MaxShardSizeMsat uint64 `protobuf:"varint,21,opt,name=max_shard_size_msat,json=maxShardSizeMsat,proto3" json:"max_shard_size_msat,omitempty"`
// // If set, an AMP-payment will be attempted.
//If set, an AMP-payment will be attempted.
Amp bool `protobuf:"varint,22,opt,name=amp,proto3" json:"amp,omitempty"` Amp bool `protobuf:"varint,22,opt,name=amp,proto3" json:"amp,omitempty"`
// // The time preference for this payment. Set to -1 to optimize for fees
//The time preference for this payment. Set to -1 to optimize for fees // only, to 1 to optimize for reliability only or a value inbetween for a mix.
//only, to 1 to optimize for reliability only or a value inbetween for a mix.
TimePref float64 `protobuf:"fixed64,23,opt,name=time_pref,json=timePref,proto3" json:"time_pref,omitempty"` TimePref float64 `protobuf:"fixed64,23,opt,name=time_pref,json=timePref,proto3" json:"time_pref,omitempty"`
} }
@@ -674,9 +648,8 @@ type TrackPaymentRequest struct {
// The hash of the payment to look up. // The hash of the payment to look up.
PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
// // If set, only the final payment update is streamed back. Intermediate updates
//If set, only the final payment update is streamed back. Intermediate updates // that show which htlcs are still in flight are suppressed.
//that show which htlcs are still in flight are suppressed.
NoInflightUpdates bool `protobuf:"varint,2,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"` NoInflightUpdates bool `protobuf:"varint,2,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"`
} }
@@ -731,11 +704,9 @@ type RouteFeeRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The destination once wishes to obtain a routing fee quote to.
//The destination once wishes to obtain a routing fee quote to.
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"` Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
// // The amount one wishes to send to the target destination.
//The amount one wishes to send to the target destination.
AmtSat int64 `protobuf:"varint,2,opt,name=amt_sat,json=amtSat,proto3" json:"amt_sat,omitempty"` AmtSat int64 `protobuf:"varint,2,opt,name=amt_sat,json=amtSat,proto3" json:"amt_sat,omitempty"`
} }
@@ -790,14 +761,12 @@ type RouteFeeResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A lower bound of the estimated fee to the target destination within the
//A lower bound of the estimated fee to the target destination within the // network, expressed in milli-satoshis.
//network, expressed in milli-satoshis.
RoutingFeeMsat int64 `protobuf:"varint,1,opt,name=routing_fee_msat,json=routingFeeMsat,proto3" json:"routing_fee_msat,omitempty"` RoutingFeeMsat int64 `protobuf:"varint,1,opt,name=routing_fee_msat,json=routingFeeMsat,proto3" json:"routing_fee_msat,omitempty"`
// // An estimate of the worst case time delay that can occur. Note that callers
//An estimate of the worst case time delay that can occur. Note that callers // will still need to factor in the final CLTV delta of the last hop into this
//will still need to factor in the final CLTV delta of the last hop into this // value.
//value.
TimeLockDelay int64 `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"` TimeLockDelay int64 `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"`
} }
@@ -856,11 +825,10 @@ type SendToRouteRequest struct {
PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
// Route that should be used to attempt to complete the payment. // Route that should be used to attempt to complete the payment.
Route *lnrpc.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"` Route *lnrpc.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"`
// // Whether the payment should be marked as failed when a temporary error is
//Whether the payment should be marked as failed when a temporary error is // returned from the given route. Set it to true so the payment won't be
//returned from the given route. Set it to true so the payment won't be // failed unless a terminal error is occurred, such as payment timeout, no
//failed unless a terminal error is occurred, such as payment timeout, no // routes, incorrect payment details, or insufficient funds.
//routes, incorrect payment details, or insufficient funds.
SkipTempErr bool `protobuf:"varint,3,opt,name=skip_temp_err,json=skipTempErr,proto3" json:"skip_temp_err,omitempty"` SkipTempErr bool `protobuf:"varint,3,opt,name=skip_temp_err,json=skipTempErr,proto3" json:"skip_temp_err,omitempty"`
} }
@@ -1307,13 +1275,11 @@ type PairData struct {
// Time of last failure. // Time of last failure.
FailTime int64 `protobuf:"varint,1,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"` FailTime int64 `protobuf:"varint,1,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"`
// // Lowest amount that failed to forward rounded to whole sats. This may be
//Lowest amount that failed to forward rounded to whole sats. This may be // set to zero if the failure is independent of amount.
//set to zero if the failure is independent of amount.
FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,json=failAmtSat,proto3" json:"fail_amt_sat,omitempty"` FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,json=failAmtSat,proto3" json:"fail_amt_sat,omitempty"`
// // Lowest amount that failed to forward in millisats. This may be
//Lowest amount that failed to forward in millisats. This may be // set to zero if the failure is independent of amount.
//set to zero if the failure is independent of amount.
FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,json=failAmtMsat,proto3" json:"fail_amt_msat,omitempty"` FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,json=failAmtMsat,proto3" json:"fail_amt_msat,omitempty"`
// Time of last success. // Time of last success.
SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"` SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"`
@@ -1440,8 +1406,7 @@ type GetMissionControlConfigResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Mission control's currently active config.
//Mission control's currently active config.
Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
} }
@@ -1489,9 +1454,8 @@ type SetMissionControlConfigRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The config to set for mission control. Note that all values *must* be set,
//The config to set for mission control. Note that all values *must* be set, // because the full config will be applied.
//because the full config will be applied.
Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
} }
@@ -1577,33 +1541,28 @@ type MissionControlConfig struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The amount of time mission control will take to restore a penalized node
//The amount of time mission control will take to restore a penalized node // or channel back to 50% success probability, expressed in seconds. Setting
//or channel back to 50% success probability, expressed in seconds. Setting // this value to a higher value will penalize failures for longer, making
//this value to a higher value will penalize failures for longer, making // mission control less likely to route through nodes and channels that we
//mission control less likely to route through nodes and channels that we // have previously recorded failures for.
//have previously recorded failures for.
HalfLifeSeconds uint64 `protobuf:"varint,1,opt,name=half_life_seconds,json=halfLifeSeconds,proto3" json:"half_life_seconds,omitempty"` HalfLifeSeconds uint64 `protobuf:"varint,1,opt,name=half_life_seconds,json=halfLifeSeconds,proto3" json:"half_life_seconds,omitempty"`
// // The probability of success mission control should assign to hop in a route
//The probability of success mission control should assign to hop in a route // where it has no other information available. Higher values will make mission
//where it has no other information available. Higher values will make mission // control more willing to try hops that we have no information about, lower
//control more willing to try hops that we have no information about, lower // values will discourage trying these hops.
//values will discourage trying these hops.
HopProbability float32 `protobuf:"fixed32,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"` HopProbability float32 `protobuf:"fixed32,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"`
// // The importance that mission control should place on historical results,
//The importance that mission control should place on historical results, // expressed as a value in [0;1]. Setting this value to 1 will ignore all
//expressed as a value in [0;1]. Setting this value to 1 will ignore all // historical payments and just use the hop probability to assess the
//historical payments and just use the hop probability to assess the // probability of success for each hop. A zero value ignores hop probability
//probability of success for each hop. A zero value ignores hop probability // completely and relies entirely on historical results, unless none are
//completely and relies entirely on historical results, unless none are // available.
//available.
Weight float32 `protobuf:"fixed32,3,opt,name=weight,proto3" json:"weight,omitempty"` Weight float32 `protobuf:"fixed32,3,opt,name=weight,proto3" json:"weight,omitempty"`
// // The maximum number of payment results that mission control will store.
//The maximum number of payment results that mission control will store.
MaximumPaymentResults uint32 `protobuf:"varint,4,opt,name=maximum_payment_results,json=maximumPaymentResults,proto3" json:"maximum_payment_results,omitempty"` MaximumPaymentResults uint32 `protobuf:"varint,4,opt,name=maximum_payment_results,json=maximumPaymentResults,proto3" json:"maximum_payment_results,omitempty"`
// // The minimum time that must have passed since the previously recorded failure
//The minimum time that must have passed since the previously recorded failure // before we raise the failure amount.
//before we raise the failure amount.
MinimumFailureRelaxInterval uint64 `protobuf:"varint,5,opt,name=minimum_failure_relax_interval,json=minimumFailureRelaxInterval,proto3" json:"minimum_failure_relax_interval,omitempty"` MinimumFailureRelaxInterval uint64 `protobuf:"varint,5,opt,name=minimum_failure_relax_interval,json=minimumFailureRelaxInterval,proto3" json:"minimum_failure_relax_interval,omitempty"`
} }
@@ -1802,21 +1761,17 @@ type BuildRouteRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The amount to send expressed in msat. If set to zero, the minimum routable
//The amount to send expressed in msat. If set to zero, the minimum routable // amount is used.
//amount is used.
AmtMsat int64 `protobuf:"varint,1,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"` AmtMsat int64 `protobuf:"varint,1,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
// // CLTV delta from the current height that should be used for the timelock
//CLTV delta from the current height that should be used for the timelock // of the final hop
//of the final hop
FinalCltvDelta int32 `protobuf:"varint,2,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"` FinalCltvDelta int32 `protobuf:"varint,2,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
// // The channel id of the channel that must be taken to the first hop. If zero,
//The channel id of the channel that must be taken to the first hop. If zero, // any channel may be used.
//any channel may be used.
OutgoingChanId uint64 `protobuf:"varint,3,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"` OutgoingChanId uint64 `protobuf:"varint,3,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
// // A list of hops that defines the route. This does not include the source hop
//A list of hops that defines the route. This does not include the source hop // pubkey.
//pubkey.
HopPubkeys [][]byte `protobuf:"bytes,4,rep,name=hop_pubkeys,json=hopPubkeys,proto3" json:"hop_pubkeys,omitempty"` HopPubkeys [][]byte `protobuf:"bytes,4,rep,name=hop_pubkeys,json=hopPubkeys,proto3" json:"hop_pubkeys,omitempty"`
// An optional payment addr to be included within the last hop of the route. // An optional payment addr to be included within the last hop of the route.
PaymentAddr []byte `protobuf:"bytes,5,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"` PaymentAddr []byte `protobuf:"bytes,5,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
@@ -1894,8 +1849,7 @@ type BuildRouteResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Fully specified route that can be used to execute the payment.
//Fully specified route that can be used to execute the payment.
Route *lnrpc.Route `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"` Route *lnrpc.Route `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"`
} }
@@ -1976,42 +1930,36 @@ func (*SubscribeHtlcEventsRequest) Descriptor() ([]byte, []int) {
return file_routerrpc_router_proto_rawDescGZIP(), []int{23} return file_routerrpc_router_proto_rawDescGZIP(), []int{23}
} }
// // HtlcEvent contains the htlc event that was processed. These are served on a
//HtlcEvent contains the htlc event that was processed. These are served on a // best-effort basis; events are not persisted, delivery is not guaranteed
//best-effort basis; events are not persisted, delivery is not guaranteed // (in the event of a crash in the switch, forward events may be lost) and
//(in the event of a crash in the switch, forward events may be lost) and // some events may be replayed upon restart. Events consumed from this package
//some events may be replayed upon restart. Events consumed from this package // should be de-duplicated by the htlc's unique combination of incoming and
//should be de-duplicated by the htlc's unique combination of incoming and // outgoing channel id and htlc id. [EXPERIMENTAL]
//outgoing channel id and htlc id. [EXPERIMENTAL]
type HtlcEvent struct { type HtlcEvent struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The short channel id that the incoming htlc arrived at our node on. This
//The short channel id that the incoming htlc arrived at our node on. This // value is zero for sends.
//value is zero for sends.
IncomingChannelId uint64 `protobuf:"varint,1,opt,name=incoming_channel_id,json=incomingChannelId,proto3" json:"incoming_channel_id,omitempty"` IncomingChannelId uint64 `protobuf:"varint,1,opt,name=incoming_channel_id,json=incomingChannelId,proto3" json:"incoming_channel_id,omitempty"`
// // The short channel id that the outgoing htlc left our node on. This value
//The short channel id that the outgoing htlc left our node on. This value // is zero for receives.
//is zero for receives.
OutgoingChannelId uint64 `protobuf:"varint,2,opt,name=outgoing_channel_id,json=outgoingChannelId,proto3" json:"outgoing_channel_id,omitempty"` OutgoingChannelId uint64 `protobuf:"varint,2,opt,name=outgoing_channel_id,json=outgoingChannelId,proto3" json:"outgoing_channel_id,omitempty"`
// // Incoming id is the index of the incoming htlc in the incoming channel.
//Incoming id is the index of the incoming htlc in the incoming channel. // This value is zero for sends.
//This value is zero for sends.
IncomingHtlcId uint64 `protobuf:"varint,3,opt,name=incoming_htlc_id,json=incomingHtlcId,proto3" json:"incoming_htlc_id,omitempty"` IncomingHtlcId uint64 `protobuf:"varint,3,opt,name=incoming_htlc_id,json=incomingHtlcId,proto3" json:"incoming_htlc_id,omitempty"`
// // Outgoing id is the index of the outgoing htlc in the outgoing channel.
//Outgoing id is the index of the outgoing htlc in the outgoing channel. // This value is zero for receives.
//This value is zero for receives.
OutgoingHtlcId uint64 `protobuf:"varint,4,opt,name=outgoing_htlc_id,json=outgoingHtlcId,proto3" json:"outgoing_htlc_id,omitempty"` OutgoingHtlcId uint64 `protobuf:"varint,4,opt,name=outgoing_htlc_id,json=outgoingHtlcId,proto3" json:"outgoing_htlc_id,omitempty"`
// // The time in unix nanoseconds that the event occurred.
//The time in unix nanoseconds that the event occurred.
TimestampNs uint64 `protobuf:"varint,5,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` TimestampNs uint64 `protobuf:"varint,5,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"`
// // The event type indicates whether the htlc was part of a send, receive or
//The event type indicates whether the htlc was part of a send, receive or // forward.
//forward.
EventType HtlcEvent_EventType `protobuf:"varint,6,opt,name=event_type,json=eventType,proto3,enum=routerrpc.HtlcEvent_EventType" json:"event_type,omitempty"` EventType HtlcEvent_EventType `protobuf:"varint,6,opt,name=event_type,json=eventType,proto3,enum=routerrpc.HtlcEvent_EventType" json:"event_type,omitempty"`
// Types that are assignable to Event: // Types that are assignable to Event:
//
// *HtlcEvent_ForwardEvent // *HtlcEvent_ForwardEvent
// *HtlcEvent_ForwardFailEvent // *HtlcEvent_ForwardFailEvent
// *HtlcEvent_SettleEvent // *HtlcEvent_SettleEvent
@@ -2374,10 +2322,9 @@ type LinkFailEvent struct {
Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
// FailureCode is the BOLT error code for the failure. // FailureCode is the BOLT error code for the failure.
WireFailure lnrpc.Failure_FailureCode `protobuf:"varint,2,opt,name=wire_failure,json=wireFailure,proto3,enum=lnrpc.Failure_FailureCode" json:"wire_failure,omitempty"` WireFailure lnrpc.Failure_FailureCode `protobuf:"varint,2,opt,name=wire_failure,json=wireFailure,proto3,enum=lnrpc.Failure_FailureCode" json:"wire_failure,omitempty"`
// // FailureDetail provides additional information about the reason for the
//FailureDetail provides additional information about the reason for the // failure. This detail enriches the information provided by the wire message
//failure. This detail enriches the information provided by the wire message // and may be 'no detail' if the wire message requires no additional metadata.
//and may be 'no detail' if the wire message requires no additional metadata.
FailureDetail FailureDetail `protobuf:"varint,3,opt,name=failure_detail,json=failureDetail,proto3,enum=routerrpc.FailureDetail" json:"failure_detail,omitempty"` FailureDetail FailureDetail `protobuf:"varint,3,opt,name=failure_detail,json=failureDetail,proto3,enum=routerrpc.FailureDetail" json:"failure_detail,omitempty"`
// A string representation of the link failure. // A string representation of the link failure.
FailureString string `protobuf:"bytes,4,opt,name=failure_string,json=failureString,proto3" json:"failure_string,omitempty"` FailureString string `protobuf:"bytes,4,opt,name=failure_string,json=failureString,proto3" json:"failure_string,omitempty"`
@@ -2450,11 +2397,9 @@ type PaymentStatus struct {
// Current state the payment is in. // Current state the payment is in.
State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"` State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"`
// // The pre-image of the payment when state is SUCCEEDED.
//The pre-image of the payment when state is SUCCEEDED.
Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"` Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"`
// // The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
//The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
Htlcs []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"` Htlcs []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"`
} }
@@ -2516,9 +2461,9 @@ type CircuitKey struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
/// The id of the channel that the is part of this circuit. // / The id of the channel that the is part of this circuit.
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"` ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// The index of the incoming htlc in the incoming channel. // / The index of the incoming htlc in the incoming channel.
HtlcId uint64 `protobuf:"varint,2,opt,name=htlc_id,json=htlcId,proto3" json:"htlc_id,omitempty"` HtlcId uint64 `protobuf:"varint,2,opt,name=htlc_id,json=htlcId,proto3" json:"htlc_id,omitempty"`
} }
@@ -2573,17 +2518,15 @@ type ForwardHtlcInterceptRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The key of this forwarded htlc. It defines the incoming channel id and
//The key of this forwarded htlc. It defines the incoming channel id and // the index in this channel.
//the index in this channel.
IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"` IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"`
// The incoming htlc amount. // The incoming htlc amount.
IncomingAmountMsat uint64 `protobuf:"varint,5,opt,name=incoming_amount_msat,json=incomingAmountMsat,proto3" json:"incoming_amount_msat,omitempty"` IncomingAmountMsat uint64 `protobuf:"varint,5,opt,name=incoming_amount_msat,json=incomingAmountMsat,proto3" json:"incoming_amount_msat,omitempty"`
// The incoming htlc expiry. // The incoming htlc expiry.
IncomingExpiry uint32 `protobuf:"varint,6,opt,name=incoming_expiry,json=incomingExpiry,proto3" json:"incoming_expiry,omitempty"` IncomingExpiry uint32 `protobuf:"varint,6,opt,name=incoming_expiry,json=incomingExpiry,proto3" json:"incoming_expiry,omitempty"`
// // The htlc payment hash. This value is not guaranteed to be unique per
//The htlc payment hash. This value is not guaranteed to be unique per // request.
//request.
PaymentHash []byte `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` PaymentHash []byte `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
// The requested outgoing channel id for this forwarded htlc. Because of // The requested outgoing channel id for this forwarded htlc. Because of
// non-strict forwarding, this isn't necessarily the channel over which the // non-strict forwarding, this isn't necessarily the channel over which the
@@ -2695,20 +2638,20 @@ func (x *ForwardHtlcInterceptRequest) GetOnionBlob() []byte {
return nil return nil
} }
//* // *
//ForwardHtlcInterceptResponse enables the caller to resolve a previously hold // ForwardHtlcInterceptResponse enables the caller to resolve a previously hold
//forward. The caller can choose either to: // forward. The caller can choose either to:
//- `Resume`: Execute the default behavior (usually forward). // - `Resume`: Execute the default behavior (usually forward).
//- `Reject`: Fail the htlc backwards. // - `Reject`: Fail the htlc backwards.
//- `Settle`: Settle this htlc with a given preimage. // - `Settle`: Settle this htlc with a given preimage.
type ForwardHtlcInterceptResponse struct { type ForwardHtlcInterceptResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
//* // *
//The key of this forwarded htlc. It defines the incoming channel id and // The key of this forwarded htlc. It defines the incoming channel id and
//the index in this channel. // the index in this channel.
IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"` IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"`
// The resolve action for this intercepted htlc. // The resolve action for this intercepted htlc.
Action ResolveHoldForwardAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ResolveHoldForwardAction" json:"action,omitempty"` Action ResolveHoldForwardAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ResolveHoldForwardAction" json:"action,omitempty"`
+98 -124
View File
@@ -19,90 +19,77 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type RouterClient interface { type RouterClient interface {
// // SendPaymentV2 attempts to route a payment described by the passed
//SendPaymentV2 attempts to route a payment described by the passed // PaymentRequest to the final destination. The call returns a stream of
//PaymentRequest to the final destination. The call returns a stream of // payment updates.
//payment updates.
SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error) SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error)
// // TrackPaymentV2 returns an update stream for the payment identified by the
//TrackPaymentV2 returns an update stream for the payment identified by the // payment hash.
//payment hash.
TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error) TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error)
// // EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
//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.
//may cost to send an HTLC to the target end destination.
EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error) EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error)
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via // Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
//the specified route. This method differs from SendPayment in that it // the specified route. This method differs from SendPayment in that it
//allows users to specify a full route manually. This can be used for // allows users to specify a full route manually. This can be used for
//things like rebalancing, and atomic swaps. It differs from the newer // things like rebalancing, and atomic swaps. It differs from the newer
//SendToRouteV2 in that it doesn't return the full HTLC information. // SendToRouteV2 in that it doesn't return the full HTLC information.
SendToRoute(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*SendToRouteResponse, error) SendToRoute(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*SendToRouteResponse, error)
// // SendToRouteV2 attempts to make a payment via the specified route. This
//SendToRouteV2 attempts to make a payment via the specified route. This // method differs from SendPayment in that it allows users to specify a full
//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
//route manually. This can be used for things like rebalancing, and atomic // swaps.
//swaps.
SendToRouteV2(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*lnrpc.HTLCAttempt, error) SendToRouteV2(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*lnrpc.HTLCAttempt, error)
// // ResetMissionControl clears all mission control state and starts with a clean
//ResetMissionControl clears all mission control state and starts with a clean // slate.
//slate.
ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error) ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error)
// // QueryMissionControl exposes the internal mission control state to callers.
//QueryMissionControl exposes the internal mission control state to callers. // It is a development feature.
//It is a development feature.
QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error) QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error)
// // XImportMissionControl is an experimental API that imports the state provided
//XImportMissionControl is an experimental API that imports the state provided // to the internal mission control's state, using all results which are more
//to the internal mission control's state, using all results which are more // recent than our existing values. These values will only be imported
//recent than our existing values. These values will only be imported // in-memory, and will not be persisted across restarts.
//in-memory, and will not be persisted across restarts.
XImportMissionControl(ctx context.Context, in *XImportMissionControlRequest, opts ...grpc.CallOption) (*XImportMissionControlResponse, error) XImportMissionControl(ctx context.Context, in *XImportMissionControlRequest, opts ...grpc.CallOption) (*XImportMissionControlResponse, error)
// // GetMissionControlConfig returns mission control's current config.
//GetMissionControlConfig returns mission control's current config.
GetMissionControlConfig(ctx context.Context, in *GetMissionControlConfigRequest, opts ...grpc.CallOption) (*GetMissionControlConfigResponse, error) GetMissionControlConfig(ctx context.Context, in *GetMissionControlConfigRequest, opts ...grpc.CallOption) (*GetMissionControlConfigResponse, error)
// // SetMissionControlConfig will set mission control's config, if the config
//SetMissionControlConfig will set mission control's config, if the config // provided is valid.
//provided is valid.
SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error) SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error)
// // QueryProbability returns the current success probability estimate for a
//QueryProbability returns the current success probability estimate for a // given node pair and amount.
//given node pair and amount.
QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error) QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error)
// // BuildRoute builds a fully specified route based on a list of hop public
//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
//keys. It retrieves the relevant channel policies from the graph in order to // calculate the correct fees and time locks.
//calculate the correct fees and time locks.
BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error) BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error)
// // SubscribeHtlcEvents creates a uni-directional stream from the server to
//SubscribeHtlcEvents creates a uni-directional stream from the server to // the client which delivers a stream of htlc events.
//the client which delivers a stream of htlc events.
SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error) SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error)
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use SendPaymentV2. SendPayment attempts to route a payment // Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
//described by the passed PaymentRequest to the final destination. The call // described by the passed PaymentRequest to the final destination. The call
//returns a stream of payment status updates. // returns a stream of payment status updates.
SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error)
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for // Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
//the payment identified by the payment hash. // the payment identified by the payment hash.
TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error)
//* // *
//HtlcInterceptor dispatches a bi-directional streaming RPC in which // HtlcInterceptor dispatches a bi-directional streaming RPC in which
//Forwarded HTLC requests are sent to the client and the client responds with // Forwarded HTLC requests are sent to the client and the client responds with
//a boolean that tells LND if this htlc should be intercepted. // a boolean that tells LND if this htlc should be intercepted.
//In case of interception, the htlc can be either settled, cancelled or // In case of interception, the htlc can be either settled, cancelled or
//resumed later by using the ResolveHoldForward endpoint. // resumed later by using the ResolveHoldForward endpoint.
HtlcInterceptor(ctx context.Context, opts ...grpc.CallOption) (Router_HtlcInterceptorClient, error) HtlcInterceptor(ctx context.Context, opts ...grpc.CallOption) (Router_HtlcInterceptorClient, error)
// // UpdateChanStatus attempts to manually set the state of a channel
//UpdateChanStatus attempts to manually set the state of a channel // (enabled, disabled, or auto). A manual "disable" request will cause the
//(enabled, disabled, or auto). A manual "disable" request will cause the // channel to stay disabled until a subsequent manual request of either
//channel to stay disabled until a subsequent manual request of either // "enable" or "auto".
//"enable" or "auto".
UpdateChanStatus(ctx context.Context, in *UpdateChanStatusRequest, opts ...grpc.CallOption) (*UpdateChanStatusResponse, error) UpdateChanStatus(ctx context.Context, in *UpdateChanStatusRequest, opts ...grpc.CallOption) (*UpdateChanStatusResponse, error)
} }
@@ -411,90 +398,77 @@ func (c *routerClient) UpdateChanStatus(ctx context.Context, in *UpdateChanStatu
// All implementations must embed UnimplementedRouterServer // All implementations must embed UnimplementedRouterServer
// for forward compatibility // for forward compatibility
type RouterServer interface { type RouterServer interface {
// // SendPaymentV2 attempts to route a payment described by the passed
//SendPaymentV2 attempts to route a payment described by the passed // PaymentRequest to the final destination. The call returns a stream of
//PaymentRequest to the final destination. The call returns a stream of // payment updates.
//payment updates.
SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error
// // TrackPaymentV2 returns an update stream for the payment identified by the
//TrackPaymentV2 returns an update stream for the payment identified by the // payment hash.
//payment hash.
TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error
// // EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
//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.
//may cost to send an HTLC to the target end destination.
EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error) EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error)
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via // Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
//the specified route. This method differs from SendPayment in that it // the specified route. This method differs from SendPayment in that it
//allows users to specify a full route manually. This can be used for // allows users to specify a full route manually. This can be used for
//things like rebalancing, and atomic swaps. It differs from the newer // things like rebalancing, and atomic swaps. It differs from the newer
//SendToRouteV2 in that it doesn't return the full HTLC information. // SendToRouteV2 in that it doesn't return the full HTLC information.
SendToRoute(context.Context, *SendToRouteRequest) (*SendToRouteResponse, error) SendToRoute(context.Context, *SendToRouteRequest) (*SendToRouteResponse, error)
// // SendToRouteV2 attempts to make a payment via the specified route. This
//SendToRouteV2 attempts to make a payment via the specified route. This // method differs from SendPayment in that it allows users to specify a full
//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
//route manually. This can be used for things like rebalancing, and atomic // swaps.
//swaps.
SendToRouteV2(context.Context, *SendToRouteRequest) (*lnrpc.HTLCAttempt, error) SendToRouteV2(context.Context, *SendToRouteRequest) (*lnrpc.HTLCAttempt, error)
// // ResetMissionControl clears all mission control state and starts with a clean
//ResetMissionControl clears all mission control state and starts with a clean // slate.
//slate.
ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error) ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error)
// // QueryMissionControl exposes the internal mission control state to callers.
//QueryMissionControl exposes the internal mission control state to callers. // It is a development feature.
//It is a development feature.
QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error) QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error)
// // XImportMissionControl is an experimental API that imports the state provided
//XImportMissionControl is an experimental API that imports the state provided // to the internal mission control's state, using all results which are more
//to the internal mission control's state, using all results which are more // recent than our existing values. These values will only be imported
//recent than our existing values. These values will only be imported // in-memory, and will not be persisted across restarts.
//in-memory, and will not be persisted across restarts.
XImportMissionControl(context.Context, *XImportMissionControlRequest) (*XImportMissionControlResponse, error) XImportMissionControl(context.Context, *XImportMissionControlRequest) (*XImportMissionControlResponse, error)
// // GetMissionControlConfig returns mission control's current config.
//GetMissionControlConfig returns mission control's current config.
GetMissionControlConfig(context.Context, *GetMissionControlConfigRequest) (*GetMissionControlConfigResponse, error) GetMissionControlConfig(context.Context, *GetMissionControlConfigRequest) (*GetMissionControlConfigResponse, error)
// // SetMissionControlConfig will set mission control's config, if the config
//SetMissionControlConfig will set mission control's config, if the config // provided is valid.
//provided is valid.
SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error) SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error)
// // QueryProbability returns the current success probability estimate for a
//QueryProbability returns the current success probability estimate for a // given node pair and amount.
//given node pair and amount.
QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error) QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error)
// // BuildRoute builds a fully specified route based on a list of hop public
//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
//keys. It retrieves the relevant channel policies from the graph in order to // calculate the correct fees and time locks.
//calculate the correct fees and time locks.
BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error) BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error)
// // SubscribeHtlcEvents creates a uni-directional stream from the server to
//SubscribeHtlcEvents creates a uni-directional stream from the server to // the client which delivers a stream of htlc events.
//the client which delivers a stream of htlc events.
SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use SendPaymentV2. SendPayment attempts to route a payment // Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
//described by the passed PaymentRequest to the final destination. The call // described by the passed PaymentRequest to the final destination. The call
//returns a stream of payment status updates. // returns a stream of payment status updates.
SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error
// Deprecated: Do not use. // Deprecated: Do not use.
// //
//Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for // Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
//the payment identified by the payment hash. // the payment identified by the payment hash.
TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error
//* // *
//HtlcInterceptor dispatches a bi-directional streaming RPC in which // HtlcInterceptor dispatches a bi-directional streaming RPC in which
//Forwarded HTLC requests are sent to the client and the client responds with // Forwarded HTLC requests are sent to the client and the client responds with
//a boolean that tells LND if this htlc should be intercepted. // a boolean that tells LND if this htlc should be intercepted.
//In case of interception, the htlc can be either settled, cancelled or // In case of interception, the htlc can be either settled, cancelled or
//resumed later by using the ResolveHoldForward endpoint. // resumed later by using the ResolveHoldForward endpoint.
HtlcInterceptor(Router_HtlcInterceptorServer) error HtlcInterceptor(Router_HtlcInterceptorServer) error
// // UpdateChanStatus attempts to manually set the state of a channel
//UpdateChanStatus attempts to manually set the state of a channel // (enabled, disabled, or auto). A manual "disable" request will cause the
//(enabled, disabled, or auto). A manual "disable" request will cause the // channel to stay disabled until a subsequent manual request of either
//channel to stay disabled until a subsequent manual request of either // "enable" or "auto".
//"enable" or "auto".
UpdateChanStatus(context.Context, *UpdateChanStatusRequest) (*UpdateChanStatusResponse, error) UpdateChanStatus(context.Context, *UpdateChanStatusRequest) (*UpdateChanStatusResponse, error)
mustEmbedUnimplementedRouterServer() mustEmbedUnimplementedRouterServer()
} }
+150 -209
View File
@@ -23,21 +23,17 @@ const (
type SignMethod int32 type SignMethod int32
const ( const (
// // Specifies that a SegWit v0 (p2wkh, np2wkh, p2wsh) input script should be
//Specifies that a SegWit v0 (p2wkh, np2wkh, p2wsh) input script should be // signed.
//signed.
SignMethod_SIGN_METHOD_WITNESS_V0 SignMethod = 0 SignMethod_SIGN_METHOD_WITNESS_V0 SignMethod = 0
// // Specifies that a SegWit v1 (p2tr) input should be signed by using the
//Specifies that a SegWit v1 (p2tr) input should be signed by using the // BIP0086 method (commit to internal key only).
//BIP0086 method (commit to internal key only).
SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086 SignMethod = 1 SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086 SignMethod = 1
// // Specifies that a SegWit v1 (p2tr) input should be signed by using a given
//Specifies that a SegWit v1 (p2tr) input should be signed by using a given // taproot hash to commit to in addition to the internal key.
//taproot hash to commit to in addition to the internal key.
SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND SignMethod = 2 SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND SignMethod = 2
// // Specifies that a SegWit v1 (p2tr) input should be spent using the script
//Specifies that a SegWit v1 (p2tr) input should be spent using the script // path and that a specific leaf script should be signed for.
//path and that a specific leaf script should be signed for.
SignMethod_SIGN_METHOD_TAPROOT_SCRIPT_SPEND SignMethod = 3 SignMethod_SIGN_METHOD_TAPROOT_SCRIPT_SPEND SignMethod = 3
) )
@@ -146,13 +142,11 @@ type KeyDescriptor struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The raw bytes of the public key in the key pair being identified. Either
//The raw bytes of the public key in the key pair being identified. Either // this or the KeyLocator must be specified.
//this or the KeyLocator must be specified.
RawKeyBytes []byte `protobuf:"bytes,1,opt,name=raw_key_bytes,json=rawKeyBytes,proto3" json:"raw_key_bytes,omitempty"` RawKeyBytes []byte `protobuf:"bytes,1,opt,name=raw_key_bytes,json=rawKeyBytes,proto3" json:"raw_key_bytes,omitempty"`
// // The key locator that identifies which private key to use for signing.
//The key locator that identifies which private key to use for signing. // Either this or the raw bytes of the target public key must be specified.
//Either this or the raw bytes of the target public key must be specified.
KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"` KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"`
} }
@@ -264,65 +258,56 @@ type SignDescriptor struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// A descriptor that precisely describes *which* key to use for signing. This
// may provide the raw public key directly, or require the Signer to re-derive
// the key according to the populated derivation path.
// //
//A descriptor that precisely describes *which* key to use for signing. This // Note that if the key descriptor was obtained through walletrpc.DeriveKey,
//may provide the raw public key directly, or require the Signer to re-derive // then the key locator MUST always be provided, since the derived keys are not
//the key according to the populated derivation path. // persisted unlike with DeriveNextKey.
//
//Note that if the key descriptor was obtained through walletrpc.DeriveKey,
//then the key locator MUST always be provided, since the derived keys are not
//persisted unlike with DeriveNextKey.
KeyDesc *KeyDescriptor `protobuf:"bytes,1,opt,name=key_desc,json=keyDesc,proto3" json:"key_desc,omitempty"` KeyDesc *KeyDescriptor `protobuf:"bytes,1,opt,name=key_desc,json=keyDesc,proto3" json:"key_desc,omitempty"`
// // A scalar value that will be added to the private key corresponding to the
//A scalar value that will be added to the private key corresponding to the // above public key to obtain the private key to be used to sign this input.
//above public key to obtain the private key to be used to sign this input. // This value is typically derived via the following computation:
//This value is typically derived via the following computation:
// //
// derivedKey = privkey + sha256(perCommitmentPoint || pubKey) mod N // derivedKey = privkey + sha256(perCommitmentPoint || pubKey) mod N
SingleTweak []byte `protobuf:"bytes,2,opt,name=single_tweak,json=singleTweak,proto3" json:"single_tweak,omitempty"` SingleTweak []byte `protobuf:"bytes,2,opt,name=single_tweak,json=singleTweak,proto3" json:"single_tweak,omitempty"`
// // A private key that will be used in combination with its corresponding
//A private key that will be used in combination with its corresponding // private key to derive the private key that is to be used to sign the target
//private key to derive the private key that is to be used to sign the target // input. Within the Lightning protocol, this value is typically the
//input. Within the Lightning protocol, this value is typically the // commitment secret from a previously revoked commitment transaction. This
//commitment secret from a previously revoked commitment transaction. This // value is in combination with two hash values, and the original private key
//value is in combination with two hash values, and the original private key // to derive the private key to be used when signing.
//to derive the private key to be used when signing.
// //
// k = (privKey*sha256(pubKey || tweakPub) + // k = (privKey*sha256(pubKey || tweakPub) +
//tweakPriv*sha256(tweakPub || pubKey)) mod N // tweakPriv*sha256(tweakPub || pubKey)) mod N
DoubleTweak []byte `protobuf:"bytes,3,opt,name=double_tweak,json=doubleTweak,proto3" json:"double_tweak,omitempty"` DoubleTweak []byte `protobuf:"bytes,3,opt,name=double_tweak,json=doubleTweak,proto3" json:"double_tweak,omitempty"`
// The 32 byte input to the taproot tweak derivation that is used to derive
// the output key from an internal key: outputKey = internalKey +
// tagged_hash("tapTweak", internalKey || tapTweak).
// //
//The 32 byte input to the taproot tweak derivation that is used to derive // When doing a BIP 86 spend, this field can be an empty byte slice.
//the output key from an internal key: outputKey = internalKey +
//tagged_hash("tapTweak", internalKey || tapTweak).
// //
//When doing a BIP 86 spend, this field can be an empty byte slice. // When doing a normal key path spend, with the output key committing to an
// // actual script root, then this field should be: the tapscript root hash.
//When doing a normal key path spend, with the output key committing to an
//actual script root, then this field should be: the tapscript root hash.
TapTweak []byte `protobuf:"bytes,10,opt,name=tap_tweak,json=tapTweak,proto3" json:"tap_tweak,omitempty"` TapTweak []byte `protobuf:"bytes,10,opt,name=tap_tweak,json=tapTweak,proto3" json:"tap_tweak,omitempty"`
// // The full script required to properly redeem the output. This field will
//The full script required to properly redeem the output. This field will // only be populated if a p2tr, p2wsh or a p2sh output is being signed. If a
//only be populated if a p2tr, p2wsh or a p2sh output is being signed. If a // taproot script path spend is being attempted, then this should be the raw
//taproot script path spend is being attempted, then this should be the raw // leaf script.
//leaf script.
WitnessScript []byte `protobuf:"bytes,4,opt,name=witness_script,json=witnessScript,proto3" json:"witness_script,omitempty"` WitnessScript []byte `protobuf:"bytes,4,opt,name=witness_script,json=witnessScript,proto3" json:"witness_script,omitempty"`
// // A description of the output being spent. The value and script MUST be
//A description of the output being spent. The value and script MUST be // provided.
//provided.
Output *TxOut `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` Output *TxOut `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"`
// // The target sighash type that should be used when generating the final
//The target sighash type that should be used when generating the final // sighash, and signature.
//sighash, and signature.
Sighash uint32 `protobuf:"varint,7,opt,name=sighash,proto3" json:"sighash,omitempty"` Sighash uint32 `protobuf:"varint,7,opt,name=sighash,proto3" json:"sighash,omitempty"`
// // The target input within the transaction that should be signed.
//The target input within the transaction that should be signed.
InputIndex int32 `protobuf:"varint,8,opt,name=input_index,json=inputIndex,proto3" json:"input_index,omitempty"` InputIndex int32 `protobuf:"varint,8,opt,name=input_index,json=inputIndex,proto3" json:"input_index,omitempty"`
// // The sign method specifies how the input should be signed. Depending on the
//The sign method specifies how the input should be signed. Depending on the // method, either the tap_tweak, witness_script or both need to be specified.
//method, either the tap_tweak, witness_script or both need to be specified. // Defaults to SegWit v0 signing to be backward compatible with older RPC
//Defaults to SegWit v0 signing to be backward compatible with older RPC // clients.
//clients.
SignMethod SignMethod `protobuf:"varint,9,opt,name=sign_method,json=signMethod,proto3,enum=signrpc.SignMethod" json:"sign_method,omitempty"` SignMethod SignMethod `protobuf:"varint,9,opt,name=sign_method,json=signMethod,proto3,enum=signrpc.SignMethod" json:"sign_method,omitempty"`
} }
@@ -430,9 +415,8 @@ type SignReq struct {
RawTxBytes []byte `protobuf:"bytes,1,opt,name=raw_tx_bytes,json=rawTxBytes,proto3" json:"raw_tx_bytes,omitempty"` RawTxBytes []byte `protobuf:"bytes,1,opt,name=raw_tx_bytes,json=rawTxBytes,proto3" json:"raw_tx_bytes,omitempty"`
// A set of sign descriptors, for each input to be signed. // A set of sign descriptors, for each input to be signed.
SignDescs []*SignDescriptor `protobuf:"bytes,2,rep,name=sign_descs,json=signDescs,proto3" json:"sign_descs,omitempty"` SignDescs []*SignDescriptor `protobuf:"bytes,2,rep,name=sign_descs,json=signDescs,proto3" json:"sign_descs,omitempty"`
// // The full list of UTXO information for each of the inputs being spent. This
//The full list of UTXO information for each of the inputs being spent. This // is required when spending one or more taproot (SegWit v1) outputs.
//is required when spending one or more taproot (SegWit v1) outputs.
PrevOutputs []*TxOut `protobuf:"bytes,3,rep,name=prev_outputs,json=prevOutputs,proto3" json:"prev_outputs,omitempty"` PrevOutputs []*TxOut `protobuf:"bytes,3,rep,name=prev_outputs,json=prevOutputs,proto3" json:"prev_outputs,omitempty"`
} }
@@ -494,9 +478,8 @@ type SignResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A set of signatures realized in a fixed 64-byte format ordered in ascending
//A set of signatures realized in a fixed 64-byte format ordered in ascending // input order.
//input order.
RawSigs [][]byte `protobuf:"bytes,1,rep,name=raw_sigs,json=rawSigs,proto3" json:"raw_sigs,omitempty"` RawSigs [][]byte `protobuf:"bytes,1,rep,name=raw_sigs,json=rawSigs,proto3" json:"raw_sigs,omitempty"`
} }
@@ -546,9 +529,8 @@ type InputScript struct {
// The serializes witness stack for the specified input. // The serializes witness stack for the specified input.
Witness [][]byte `protobuf:"bytes,1,rep,name=witness,proto3" json:"witness,omitempty"` Witness [][]byte `protobuf:"bytes,1,rep,name=witness,proto3" json:"witness,omitempty"`
// // The optional sig script for the specified witness that will only be set if
//The optional sig script for the specified witness that will only be set if // the input specified is a nested p2sh witness program.
//the input specified is a nested p2sh witness program.
SigScript []byte `protobuf:"bytes,2,opt,name=sig_script,json=sigScript,proto3" json:"sig_script,omitempty"` SigScript []byte `protobuf:"bytes,2,opt,name=sig_script,json=sigScript,proto3" json:"sig_script,omitempty"`
} }
@@ -651,25 +633,21 @@ type SignMessageReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The message to be signed. When using REST, this field must be encoded as
//The message to be signed. When using REST, this field must be encoded as // base64.
//base64.
Msg []byte `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg []byte `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
// The key locator that identifies which key to use for signing. // The key locator that identifies which key to use for signing.
KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"` KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"`
// Double-SHA256 hash instead of just the default single round. // Double-SHA256 hash instead of just the default single round.
DoubleHash bool `protobuf:"varint,3,opt,name=double_hash,json=doubleHash,proto3" json:"double_hash,omitempty"` DoubleHash bool `protobuf:"varint,3,opt,name=double_hash,json=doubleHash,proto3" json:"double_hash,omitempty"`
// // Use the compact (pubkey recoverable) format instead of the raw lnwire
//Use the compact (pubkey recoverable) format instead of the raw lnwire // format. This option cannot be used with Schnorr signatures.
//format. This option cannot be used with Schnorr signatures.
CompactSig bool `protobuf:"varint,4,opt,name=compact_sig,json=compactSig,proto3" json:"compact_sig,omitempty"` CompactSig bool `protobuf:"varint,4,opt,name=compact_sig,json=compactSig,proto3" json:"compact_sig,omitempty"`
// // Use Schnorr signature. This option cannot be used with compact format.
//Use Schnorr signature. This option cannot be used with compact format.
SchnorrSig bool `protobuf:"varint,5,opt,name=schnorr_sig,json=schnorrSig,proto3" json:"schnorr_sig,omitempty"` SchnorrSig bool `protobuf:"varint,5,opt,name=schnorr_sig,json=schnorrSig,proto3" json:"schnorr_sig,omitempty"`
// // The optional Taproot tweak bytes to apply to the private key before creating
//The optional Taproot tweak bytes to apply to the private key before creating // a Schnorr signature. The private key is tweaked as described in BIP-341:
//a Schnorr signature. The private key is tweaked as described in BIP-341: // privKey + h_tapTweak(internalKey || tapTweak)
//privKey + h_tapTweak(internalKey || tapTweak)
SchnorrSigTapTweak []byte `protobuf:"bytes,6,opt,name=schnorr_sig_tap_tweak,json=schnorrSigTapTweak,proto3" json:"schnorr_sig_tap_tweak,omitempty"` SchnorrSigTapTweak []byte `protobuf:"bytes,6,opt,name=schnorr_sig_tap_tweak,json=schnorrSigTapTweak,proto3" json:"schnorr_sig_tap_tweak,omitempty"`
} }
@@ -752,8 +730,7 @@ type SignMessageResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The signature for the given message in the fixed-size LN wire format.
//The signature for the given message in the fixed-size LN wire format.
Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
} }
@@ -804,18 +781,15 @@ type VerifyMessageReq struct {
// The message over which the signature is to be verified. When using // The message over which the signature is to be verified. When using
// REST, this field must be encoded as base64. // REST, this field must be encoded as base64.
Msg []byte `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg []byte `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
// // The fixed-size LN wire encoded signature to be verified over the given
//The fixed-size LN wire encoded signature to be verified over the given // message. When using REST, this field must be encoded as base64.
//message. When using REST, this field must be encoded as base64.
Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
// // The public key the signature has to be valid for. When using REST, this
//The public key the signature has to be valid for. When using REST, this // field must be encoded as base64. If the is_schnorr_sig option is true, then
//field must be encoded as base64. If the is_schnorr_sig option is true, then // the public key is expected to be in the 32-byte x-only serialization
//the public key is expected to be in the 32-byte x-only serialization // according to BIP-340.
//according to BIP-340.
Pubkey []byte `protobuf:"bytes,3,opt,name=pubkey,proto3" json:"pubkey,omitempty"` Pubkey []byte `protobuf:"bytes,3,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
// // Specifies if the signature is a Schnorr signature.
//Specifies if the signature is a Schnorr signature.
IsSchnorrSig bool `protobuf:"varint,4,opt,name=is_schnorr_sig,json=isSchnorrSig,proto3" json:"is_schnorr_sig,omitempty"` IsSchnorrSig bool `protobuf:"varint,4,opt,name=is_schnorr_sig,json=isSchnorrSig,proto3" json:"is_schnorr_sig,omitempty"`
} }
@@ -934,17 +908,15 @@ type SharedKeyRequest struct {
// The ephemeral public key to use for the DH key derivation. // The ephemeral public key to use for the DH key derivation.
EphemeralPubkey []byte `protobuf:"bytes,1,opt,name=ephemeral_pubkey,json=ephemeralPubkey,proto3" json:"ephemeral_pubkey,omitempty"` EphemeralPubkey []byte `protobuf:"bytes,1,opt,name=ephemeral_pubkey,json=ephemeralPubkey,proto3" json:"ephemeral_pubkey,omitempty"`
// // Deprecated. The optional key locator of the local key that should be used.
//Deprecated. The optional key locator of the local key that should be used. // If this parameter is not set then the node's identity private key will be
//If this parameter is not set then the node's identity private key will be // used.
//used.
// //
// Deprecated: Do not use. // Deprecated: Do not use.
KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"` KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"`
// // A key descriptor describes the key used for performing ECDH. Either a key
//A key descriptor describes the key used for performing ECDH. Either a key // locator or a raw public key is expected, if neither is supplied, defaults to
//locator or a raw public key is expected, if neither is supplied, defaults to // the node's identity private key.
//the node's identity private key.
KeyDesc *KeyDescriptor `protobuf:"bytes,3,opt,name=key_desc,json=keyDesc,proto3" json:"key_desc,omitempty"` KeyDesc *KeyDescriptor `protobuf:"bytes,3,opt,name=key_desc,json=keyDesc,proto3" json:"key_desc,omitempty"`
} }
@@ -1055,13 +1027,11 @@ type TweakDesc struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Tweak is the 32-byte value that will modify the public key.
//Tweak is the 32-byte value that will modify the public key.
Tweak []byte `protobuf:"bytes,1,opt,name=tweak,proto3" json:"tweak,omitempty"` Tweak []byte `protobuf:"bytes,1,opt,name=tweak,proto3" json:"tweak,omitempty"`
// // Specifies if the target key should be converted to an x-only public key
//Specifies if the target key should be converted to an x-only public key // before tweaking. If true, then the public key will be mapped to an x-only
//before tweaking. If true, then the public key will be mapped to an x-only // key before the tweaking operation is applied.
//key before the tweaking operation is applied.
IsXOnly bool `protobuf:"varint,2,opt,name=is_x_only,json=isXOnly,proto3" json:"is_x_only,omitempty"` IsXOnly bool `protobuf:"varint,2,opt,name=is_x_only,json=isXOnly,proto3" json:"is_x_only,omitempty"`
} }
@@ -1116,18 +1086,16 @@ type TaprootTweakDesc struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The root hash of the tapscript tree if a script path is committed to. If
//The root hash of the tapscript tree if a script path is committed to. If // the MuSig2 key put on chain doesn't also commit to a script path (BIP-0086
//the MuSig2 key put on chain doesn't also commit to a script path (BIP-0086 // key spend only), then this needs to be empty and the key_spend_only field
//key spend only), then this needs to be empty and the key_spend_only field // below must be set to true. This is required because gRPC cannot
//below must be set to true. This is required because gRPC cannot // differentiate between a zero-size byte slice and a nil byte slice (both
//differentiate between a zero-size byte slice and a nil byte slice (both // would be serialized the same way). So the extra boolean is required.
//would be serialized the same way). So the extra boolean is required.
ScriptRoot []byte `protobuf:"bytes,1,opt,name=script_root,json=scriptRoot,proto3" json:"script_root,omitempty"` ScriptRoot []byte `protobuf:"bytes,1,opt,name=script_root,json=scriptRoot,proto3" json:"script_root,omitempty"`
// // Indicates that the above script_root is expected to be empty because this
//Indicates that the above script_root is expected to be empty because this // is a BIP-0086 key spend only commitment where only the internal key is
//is a BIP-0086 key spend only commitment where only the internal key is // committed to instead of also including a script root hash.
//committed to instead of also including a script root hash.
KeySpendOnly bool `protobuf:"varint,2,opt,name=key_spend_only,json=keySpendOnly,proto3" json:"key_spend_only,omitempty"` KeySpendOnly bool `protobuf:"varint,2,opt,name=key_spend_only,json=keySpendOnly,proto3" json:"key_spend_only,omitempty"`
} }
@@ -1182,20 +1150,17 @@ type MuSig2CombineKeysRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A list of all public keys (serialized in 32-byte x-only format!)
//A list of all public keys (serialized in 32-byte x-only format!) // participating in the signing session. The list will always be sorted
//participating in the signing session. The list will always be sorted // lexicographically internally. This must include the local key which is
//lexicographically internally. This must include the local key which is // described by the above key_loc.
//described by the above key_loc.
AllSignerPubkeys [][]byte `protobuf:"bytes,1,rep,name=all_signer_pubkeys,json=allSignerPubkeys,proto3" json:"all_signer_pubkeys,omitempty"` AllSignerPubkeys [][]byte `protobuf:"bytes,1,rep,name=all_signer_pubkeys,json=allSignerPubkeys,proto3" json:"all_signer_pubkeys,omitempty"`
// // A series of optional generic tweaks to be applied to the the aggregated
//A series of optional generic tweaks to be applied to the the aggregated // public key.
//public key.
Tweaks []*TweakDesc `protobuf:"bytes,2,rep,name=tweaks,proto3" json:"tweaks,omitempty"` Tweaks []*TweakDesc `protobuf:"bytes,2,rep,name=tweaks,proto3" json:"tweaks,omitempty"`
// // An optional taproot specific tweak that must be specified if the MuSig2
//An optional taproot specific tweak that must be specified if the MuSig2 // combined key will be used as the main taproot key of a taproot output
//combined key will be used as the main taproot key of a taproot output // on-chain.
//on-chain.
TaprootTweak *TaprootTweakDesc `protobuf:"bytes,3,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"` TaprootTweak *TaprootTweakDesc `protobuf:"bytes,3,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"`
} }
@@ -1257,16 +1222,14 @@ type MuSig2CombineKeysResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The combined public key (in the 32-byte x-only format) with all tweaks
//The combined public key (in the 32-byte x-only format) with all tweaks // applied to it. If a taproot tweak is specified, this corresponds to the
//applied to it. If a taproot tweak is specified, this corresponds to the // taproot key that can be put into the on-chain output.
//taproot key that can be put into the on-chain output.
CombinedKey []byte `protobuf:"bytes,1,opt,name=combined_key,json=combinedKey,proto3" json:"combined_key,omitempty"` CombinedKey []byte `protobuf:"bytes,1,opt,name=combined_key,json=combinedKey,proto3" json:"combined_key,omitempty"`
// // The raw combined public key (in the 32-byte x-only format) before any tweaks
//The raw combined public key (in the 32-byte x-only format) before any tweaks // are applied to it. If a taproot tweak is specified, this corresponds to the
//are applied to it. If a taproot tweak is specified, this corresponds to the // internal key that needs to be put into the witness if the script spend path
//internal key that needs to be put into the witness if the script spend path // is used.
//is used.
TaprootInternalKey []byte `protobuf:"bytes,2,opt,name=taproot_internal_key,json=taprootInternalKey,proto3" json:"taproot_internal_key,omitempty"` TaprootInternalKey []byte `protobuf:"bytes,2,opt,name=taproot_internal_key,json=taprootInternalKey,proto3" json:"taproot_internal_key,omitempty"`
} }
@@ -1321,27 +1284,22 @@ type MuSig2SessionRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The key locator that identifies which key to use for signing.
//The key locator that identifies which key to use for signing.
KeyLoc *KeyLocator `protobuf:"bytes,1,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"` KeyLoc *KeyLocator `protobuf:"bytes,1,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"`
// // A list of all public keys (serialized in 32-byte x-only format!)
//A list of all public keys (serialized in 32-byte x-only format!) // participating in the signing session. The list will always be sorted
//participating in the signing session. The list will always be sorted // lexicographically internally. This must include the local key which is
//lexicographically internally. This must include the local key which is // described by the above key_loc.
//described by the above key_loc.
AllSignerPubkeys [][]byte `protobuf:"bytes,2,rep,name=all_signer_pubkeys,json=allSignerPubkeys,proto3" json:"all_signer_pubkeys,omitempty"` AllSignerPubkeys [][]byte `protobuf:"bytes,2,rep,name=all_signer_pubkeys,json=allSignerPubkeys,proto3" json:"all_signer_pubkeys,omitempty"`
// // An optional list of all public nonces of other signing participants that
//An optional list of all public nonces of other signing participants that // might already be known.
//might already be known.
OtherSignerPublicNonces [][]byte `protobuf:"bytes,3,rep,name=other_signer_public_nonces,json=otherSignerPublicNonces,proto3" json:"other_signer_public_nonces,omitempty"` OtherSignerPublicNonces [][]byte `protobuf:"bytes,3,rep,name=other_signer_public_nonces,json=otherSignerPublicNonces,proto3" json:"other_signer_public_nonces,omitempty"`
// // A series of optional generic tweaks to be applied to the the aggregated
//A series of optional generic tweaks to be applied to the the aggregated // public key.
//public key.
Tweaks []*TweakDesc `protobuf:"bytes,4,rep,name=tweaks,proto3" json:"tweaks,omitempty"` Tweaks []*TweakDesc `protobuf:"bytes,4,rep,name=tweaks,proto3" json:"tweaks,omitempty"`
// // An optional taproot specific tweak that must be specified if the MuSig2
//An optional taproot specific tweak that must be specified if the MuSig2 // combined key will be used as the main taproot key of a taproot output
//combined key will be used as the main taproot key of a taproot output // on-chain.
//on-chain.
TaprootTweak *TaprootTweakDesc `protobuf:"bytes,5,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"` TaprootTweak *TaprootTweakDesc `protobuf:"bytes,5,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"`
} }
@@ -1417,30 +1375,25 @@ type MuSig2SessionResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unique ID that represents this signing session. A session can be used
//The unique ID that represents this signing session. A session can be used // for producing a signature a single time. If the signing fails for any
//for producing a signature a single time. If the signing fails for any // reason, a new session with the same participants needs to be created.
//reason, a new session with the same participants needs to be created.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
// // The combined public key (in the 32-byte x-only format) with all tweaks
//The combined public key (in the 32-byte x-only format) with all tweaks // applied to it. If a taproot tweak is specified, this corresponds to the
//applied to it. If a taproot tweak is specified, this corresponds to the // taproot key that can be put into the on-chain output.
//taproot key that can be put into the on-chain output.
CombinedKey []byte `protobuf:"bytes,2,opt,name=combined_key,json=combinedKey,proto3" json:"combined_key,omitempty"` CombinedKey []byte `protobuf:"bytes,2,opt,name=combined_key,json=combinedKey,proto3" json:"combined_key,omitempty"`
// // The raw combined public key (in the 32-byte x-only format) before any tweaks
//The raw combined public key (in the 32-byte x-only format) before any tweaks // are applied to it. If a taproot tweak is specified, this corresponds to the
//are applied to it. If a taproot tweak is specified, this corresponds to the // internal key that needs to be put into the witness if the script spend path
//internal key that needs to be put into the witness if the script spend path // is used.
//is used.
TaprootInternalKey []byte `protobuf:"bytes,3,opt,name=taproot_internal_key,json=taprootInternalKey,proto3" json:"taproot_internal_key,omitempty"` TaprootInternalKey []byte `protobuf:"bytes,3,opt,name=taproot_internal_key,json=taprootInternalKey,proto3" json:"taproot_internal_key,omitempty"`
// // The two public nonces the local signer uses, combined into a single value
//The two public nonces the local signer uses, combined into a single value // of 66 bytes. Can be split into the two 33-byte points to get the individual
//of 66 bytes. Can be split into the two 33-byte points to get the individual // nonces.
//nonces.
LocalPublicNonces []byte `protobuf:"bytes,4,opt,name=local_public_nonces,json=localPublicNonces,proto3" json:"local_public_nonces,omitempty"` LocalPublicNonces []byte `protobuf:"bytes,4,opt,name=local_public_nonces,json=localPublicNonces,proto3" json:"local_public_nonces,omitempty"`
// // Indicates whether all nonces required to start the signing process are known
//Indicates whether all nonces required to start the signing process are known // now.
//now.
HaveAllNonces bool `protobuf:"varint,5,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"` HaveAllNonces bool `protobuf:"varint,5,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"`
} }
@@ -1516,12 +1469,10 @@ type MuSig2RegisterNoncesRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unique ID of the signing session those nonces should be registered with.
//The unique ID of the signing session those nonces should be registered with.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
// // A list of all public nonces of other signing participants that should be
//A list of all public nonces of other signing participants that should be // registered.
//registered.
OtherSignerPublicNonces [][]byte `protobuf:"bytes,3,rep,name=other_signer_public_nonces,json=otherSignerPublicNonces,proto3" json:"other_signer_public_nonces,omitempty"` OtherSignerPublicNonces [][]byte `protobuf:"bytes,3,rep,name=other_signer_public_nonces,json=otherSignerPublicNonces,proto3" json:"other_signer_public_nonces,omitempty"`
} }
@@ -1576,9 +1527,8 @@ type MuSig2RegisterNoncesResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Indicates whether all nonces required to start the signing process are known
//Indicates whether all nonces required to start the signing process are known // now.
//now.
HaveAllNonces bool `protobuf:"varint,1,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"` HaveAllNonces bool `protobuf:"varint,1,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"`
} }
@@ -1626,16 +1576,13 @@ type MuSig2SignRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unique ID of the signing session to use for signing.
//The unique ID of the signing session to use for signing.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
// // The 32-byte SHA256 digest of the message to sign.
//The 32-byte SHA256 digest of the message to sign.
MessageDigest []byte `protobuf:"bytes,2,opt,name=message_digest,json=messageDigest,proto3" json:"message_digest,omitempty"` MessageDigest []byte `protobuf:"bytes,2,opt,name=message_digest,json=messageDigest,proto3" json:"message_digest,omitempty"`
// // Cleanup indicates that after signing, the session state can be cleaned up,
//Cleanup indicates that after signing, the session state can be cleaned up, // since another participant is going to be responsible for combining the
//since another participant is going to be responsible for combining the // partial signatures.
//partial signatures.
Cleanup bool `protobuf:"varint,3,opt,name=cleanup,proto3" json:"cleanup,omitempty"` Cleanup bool `protobuf:"varint,3,opt,name=cleanup,proto3" json:"cleanup,omitempty"`
} }
@@ -1697,8 +1644,7 @@ type MuSig2SignResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The partial signature created by the local signer.
//The partial signature created by the local signer.
LocalPartialSignature []byte `protobuf:"bytes,1,opt,name=local_partial_signature,json=localPartialSignature,proto3" json:"local_partial_signature,omitempty"` LocalPartialSignature []byte `protobuf:"bytes,1,opt,name=local_partial_signature,json=localPartialSignature,proto3" json:"local_partial_signature,omitempty"`
} }
@@ -1746,12 +1692,10 @@ type MuSig2CombineSigRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unique ID of the signing session to combine the signatures for.
//The unique ID of the signing session to combine the signatures for.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
// // The list of all other participants' partial signatures to add to the current
//The list of all other participants' partial signatures to add to the current // session.
//session.
OtherPartialSignatures [][]byte `protobuf:"bytes,2,rep,name=other_partial_signatures,json=otherPartialSignatures,proto3" json:"other_partial_signatures,omitempty"` OtherPartialSignatures [][]byte `protobuf:"bytes,2,rep,name=other_partial_signatures,json=otherPartialSignatures,proto3" json:"other_partial_signatures,omitempty"`
} }
@@ -1806,13 +1750,11 @@ type MuSig2CombineSigResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Indicates whether all partial signatures required to create a final, full
//Indicates whether all partial signatures required to create a final, full // signature are known yet. If this is true, then the final_signature field is
//signature are known yet. If this is true, then the final_signature field is // set, otherwise it is empty.
//set, otherwise it is empty.
HaveAllSignatures bool `protobuf:"varint,1,opt,name=have_all_signatures,json=haveAllSignatures,proto3" json:"have_all_signatures,omitempty"` HaveAllSignatures bool `protobuf:"varint,1,opt,name=have_all_signatures,json=haveAllSignatures,proto3" json:"have_all_signatures,omitempty"`
// // The final, full signature that is valid for the combined public key.
//The final, full signature that is valid for the combined public key.
FinalSignature []byte `protobuf:"bytes,2,opt,name=final_signature,json=finalSignature,proto3" json:"final_signature,omitempty"` FinalSignature []byte `protobuf:"bytes,2,opt,name=final_signature,json=finalSignature,proto3" json:"final_signature,omitempty"`
} }
@@ -1867,8 +1809,7 @@ type MuSig2CleanupRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unique ID of the signing session that should be removed/cleaned up.
//The unique ID of the signing session that should be removed/cleaned up.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
} }
+158 -180
View File
@@ -18,116 +18,105 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type SignerClient interface { type SignerClient interface {
// 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).
// //
//SignOutputRaw is a method that can be used to generated a signature for a // If we are unable to sign using the specified keys, then an error will be
//set of inputs/outputs to a transaction. Each request specifies details // returned.
//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.
SignOutputRaw(ctx context.Context, in *SignReq, opts ...grpc.CallOption) (*SignResp, error) SignOutputRaw(ctx context.Context, in *SignReq, opts ...grpc.CallOption) (*SignResp, error)
// 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/p2tr outputs and p2wkh outputs nested within a regular p2sh
// output.
// //
//ComputeInputScript generates a complete InputIndex for the passed // Note that when using this method to sign inputs belonging to the wallet,
//transaction with the signature as defined within the passed SignDescriptor. // the only items of the SignDescriptor that need to be populated are pkScript
//This method should be capable of generating the proper input script for both // in the TxOut field, the value in that same field, and finally the input
//regular p2wkh/p2tr outputs and p2wkh outputs nested within a regular p2sh // index.
//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.
ComputeInputScript(ctx context.Context, in *SignReq, opts ...grpc.CallOption) (*InputScriptResp, error) ComputeInputScript(ctx context.Context, in *SignReq, opts ...grpc.CallOption) (*InputScriptResp, error)
// SignMessage signs a message with the key specified in the key locator. The
// returned signature is fixed-size LN wire format encoded.
// //
//SignMessage signs a message with the key specified in the key locator. The // The main difference to SignMessage in the main RPC is that a specific key is
//returned signature is fixed-size LN wire format encoded. // used to sign the message instead of the node identity private key.
//
//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.
SignMessage(ctx context.Context, in *SignMessageReq, opts ...grpc.CallOption) (*SignMessageResp, error) SignMessage(ctx context.Context, in *SignMessageReq, opts ...grpc.CallOption) (*SignMessageResp, error)
// VerifyMessage verifies a signature over a message using the public key
// provided. The signature must be fixed-size LN wire format encoded.
// //
//VerifyMessage verifies a signature over a message using the public key // The main difference to VerifyMessage in the main RPC is that the public key
//provided. The signature must be fixed-size LN wire format encoded. // used to sign the message does not have to be a node known to the network.
//
//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.
VerifyMessage(ctx context.Context, in *VerifyMessageReq, opts ...grpc.CallOption) (*VerifyMessageResp, error) VerifyMessage(ctx context.Context, in *VerifyMessageReq, opts ...grpc.CallOption) (*VerifyMessageResp, error)
// // DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
//DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key // derivation between the ephemeral public key in the request and the node's
//derivation between the ephemeral public key in the request and the node's // key specified in the key_desc parameter. Either a key locator or a raw
//key specified in the key_desc parameter. Either a key locator or a raw // public key is expected in the key_desc, if neither is supplied, defaults to
//public key is expected in the key_desc, if neither is supplied, defaults to // the node's identity private key:
//the node's identity private key: // P_shared = privKeyNode * ephemeralPubkey
//P_shared = privKeyNode * ephemeralPubkey // The resulting shared public key is serialized in the compressed format and
//The resulting shared public key is serialized in the compressed format and // hashed with sha256, resulting in the final key length of 256bit.
//hashed with sha256, resulting in the final key length of 256bit.
DeriveSharedKey(ctx context.Context, in *SharedKeyRequest, opts ...grpc.CallOption) (*SharedKeyResponse, error) DeriveSharedKey(ctx context.Context, in *SharedKeyRequest, opts ...grpc.CallOption) (*SharedKeyResponse, error)
// MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used
// to calculate the combined MuSig2 public key from a list of all participating
// signers' public keys. This RPC is completely stateless and deterministic and
// does not create any signing session. It can be used to determine the Taproot
// public key that should be put in an on-chain output once all public keys are
// known. A signing session is only needed later when that output should be
// _spent_ again.
// //
//MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//to calculate the combined MuSig2 public key from a list of all participating // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//signers' public keys. This RPC is completely stateless and deterministic and // releases. Backward compatibility is not guaranteed!
//does not create any signing session. It can be used to determine the Taproot
//public key that should be put in an on-chain output once all public keys are
//known. A signing session is only needed later when that output should be
//_spent_ again.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CombineKeys(ctx context.Context, in *MuSig2CombineKeysRequest, opts ...grpc.CallOption) (*MuSig2CombineKeysResponse, error) MuSig2CombineKeys(ctx context.Context, in *MuSig2CombineKeysRequest, opts ...grpc.CallOption) (*MuSig2CombineKeysResponse, error)
// MuSig2CreateSession (experimental!) creates a new MuSig2 signing session
// using the local key identified by the key locator. The complete list of all
// public keys of all signing parties must be provided, including the public
// key of the local signing key. If nonces of other parties are already known,
// they can be submitted as well to reduce the number of RPC calls necessary
// later on.
// //
//MuSig2CreateSession (experimental!) creates a new MuSig2 signing session // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//using the local key identified by the key locator. The complete list of all // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//public keys of all signing parties must be provided, including the public // releases. Backward compatibility is not guaranteed!
//key of the local signing key. If nonces of other parties are already known,
//they can be submitted as well to reduce the number of RPC calls necessary
//later on.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CreateSession(ctx context.Context, in *MuSig2SessionRequest, opts ...grpc.CallOption) (*MuSig2SessionResponse, error) MuSig2CreateSession(ctx context.Context, in *MuSig2SessionRequest, opts ...grpc.CallOption) (*MuSig2SessionResponse, error)
// MuSig2RegisterNonces (experimental!) registers one or more public nonces of
// other signing participants for a session identified by its ID. This RPC can
// be called multiple times until all nonces are registered.
// //
//MuSig2RegisterNonces (experimental!) registers one or more public nonces of // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//other signing participants for a session identified by its ID. This RPC can // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//be called multiple times until all nonces are registered. // releases. Backward compatibility is not guaranteed!
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2RegisterNonces(ctx context.Context, in *MuSig2RegisterNoncesRequest, opts ...grpc.CallOption) (*MuSig2RegisterNoncesResponse, error) MuSig2RegisterNonces(ctx context.Context, in *MuSig2RegisterNoncesRequest, opts ...grpc.CallOption) (*MuSig2RegisterNoncesResponse, error)
// MuSig2Sign (experimental!) creates a partial signature using the local
// signing key that was specified when the session was created. This can only
// be called when all public nonces of all participants are known and have been
// registered with the session. If this node isn't responsible for combining
// all the partial signatures, then the cleanup flag should be set, indicating
// that the session can be removed from memory once the signature was produced.
// //
//MuSig2Sign (experimental!) creates a partial signature using the local // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//signing key that was specified when the session was created. This can only // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//be called when all public nonces of all participants are known and have been // releases. Backward compatibility is not guaranteed!
//registered with the session. If this node isn't responsible for combining
//all the partial signatures, then the cleanup flag should be set, indicating
//that the session can be removed from memory once the signature was produced.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2Sign(ctx context.Context, in *MuSig2SignRequest, opts ...grpc.CallOption) (*MuSig2SignResponse, error) MuSig2Sign(ctx context.Context, in *MuSig2SignRequest, opts ...grpc.CallOption) (*MuSig2SignResponse, error)
// MuSig2CombineSig (experimental!) combines the given partial signature(s)
// with the local one, if it already exists. Once a partial signature of all
// participants is registered, the final signature will be combined and
// returned.
// //
//MuSig2CombineSig (experimental!) combines the given partial signature(s) // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//with the local one, if it already exists. Once a partial signature of all // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//participants is registered, the final signature will be combined and // releases. Backward compatibility is not guaranteed!
//returned.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CombineSig(ctx context.Context, in *MuSig2CombineSigRequest, opts ...grpc.CallOption) (*MuSig2CombineSigResponse, error) MuSig2CombineSig(ctx context.Context, in *MuSig2CombineSigRequest, opts ...grpc.CallOption) (*MuSig2CombineSigResponse, error)
// MuSig2Cleanup (experimental!) allows a caller to clean up a session early in
// cases where it's obvious that the signing session won't succeed and the
// resources can be released.
// //
//MuSig2Cleanup (experimental!) allows a caller to clean up a session early in // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//cases where it's obvious that the signing session won't succeed and the // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//resources can be released. // releases. Backward compatibility is not guaranteed!
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2Cleanup(ctx context.Context, in *MuSig2CleanupRequest, opts ...grpc.CallOption) (*MuSig2CleanupResponse, error) MuSig2Cleanup(ctx context.Context, in *MuSig2CleanupRequest, opts ...grpc.CallOption) (*MuSig2CleanupResponse, error)
} }
@@ -242,116 +231,105 @@ func (c *signerClient) MuSig2Cleanup(ctx context.Context, in *MuSig2CleanupReque
// All implementations must embed UnimplementedSignerServer // All implementations must embed UnimplementedSignerServer
// for forward compatibility // for forward compatibility
type SignerServer interface { type SignerServer interface {
// 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).
// //
//SignOutputRaw is a method that can be used to generated a signature for a // If we are unable to sign using the specified keys, then an error will be
//set of inputs/outputs to a transaction. Each request specifies details // returned.
//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.
SignOutputRaw(context.Context, *SignReq) (*SignResp, error) SignOutputRaw(context.Context, *SignReq) (*SignResp, error)
// 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/p2tr outputs and p2wkh outputs nested within a regular p2sh
// output.
// //
//ComputeInputScript generates a complete InputIndex for the passed // Note that when using this method to sign inputs belonging to the wallet,
//transaction with the signature as defined within the passed SignDescriptor. // the only items of the SignDescriptor that need to be populated are pkScript
//This method should be capable of generating the proper input script for both // in the TxOut field, the value in that same field, and finally the input
//regular p2wkh/p2tr outputs and p2wkh outputs nested within a regular p2sh // index.
//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.
ComputeInputScript(context.Context, *SignReq) (*InputScriptResp, error) ComputeInputScript(context.Context, *SignReq) (*InputScriptResp, error)
// SignMessage signs a message with the key specified in the key locator. The
// returned signature is fixed-size LN wire format encoded.
// //
//SignMessage signs a message with the key specified in the key locator. The // The main difference to SignMessage in the main RPC is that a specific key is
//returned signature is fixed-size LN wire format encoded. // used to sign the message instead of the node identity private key.
//
//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.
SignMessage(context.Context, *SignMessageReq) (*SignMessageResp, error) SignMessage(context.Context, *SignMessageReq) (*SignMessageResp, error)
// VerifyMessage verifies a signature over a message using the public key
// provided. The signature must be fixed-size LN wire format encoded.
// //
//VerifyMessage verifies a signature over a message using the public key // The main difference to VerifyMessage in the main RPC is that the public key
//provided. The signature must be fixed-size LN wire format encoded. // used to sign the message does not have to be a node known to the network.
//
//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.
VerifyMessage(context.Context, *VerifyMessageReq) (*VerifyMessageResp, error) VerifyMessage(context.Context, *VerifyMessageReq) (*VerifyMessageResp, error)
// // DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
//DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key // derivation between the ephemeral public key in the request and the node's
//derivation between the ephemeral public key in the request and the node's // key specified in the key_desc parameter. Either a key locator or a raw
//key specified in the key_desc parameter. Either a key locator or a raw // public key is expected in the key_desc, if neither is supplied, defaults to
//public key is expected in the key_desc, if neither is supplied, defaults to // the node's identity private key:
//the node's identity private key: // P_shared = privKeyNode * ephemeralPubkey
//P_shared = privKeyNode * ephemeralPubkey // The resulting shared public key is serialized in the compressed format and
//The resulting shared public key is serialized in the compressed format and // hashed with sha256, resulting in the final key length of 256bit.
//hashed with sha256, resulting in the final key length of 256bit.
DeriveSharedKey(context.Context, *SharedKeyRequest) (*SharedKeyResponse, error) DeriveSharedKey(context.Context, *SharedKeyRequest) (*SharedKeyResponse, error)
// MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used
// to calculate the combined MuSig2 public key from a list of all participating
// signers' public keys. This RPC is completely stateless and deterministic and
// does not create any signing session. It can be used to determine the Taproot
// public key that should be put in an on-chain output once all public keys are
// known. A signing session is only needed later when that output should be
// _spent_ again.
// //
//MuSig2CombineKeys (experimental!) is a stateless helper RPC that can be used // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//to calculate the combined MuSig2 public key from a list of all participating // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//signers' public keys. This RPC is completely stateless and deterministic and // releases. Backward compatibility is not guaranteed!
//does not create any signing session. It can be used to determine the Taproot
//public key that should be put in an on-chain output once all public keys are
//known. A signing session is only needed later when that output should be
//_spent_ again.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CombineKeys(context.Context, *MuSig2CombineKeysRequest) (*MuSig2CombineKeysResponse, error) MuSig2CombineKeys(context.Context, *MuSig2CombineKeysRequest) (*MuSig2CombineKeysResponse, error)
// MuSig2CreateSession (experimental!) creates a new MuSig2 signing session
// using the local key identified by the key locator. The complete list of all
// public keys of all signing parties must be provided, including the public
// key of the local signing key. If nonces of other parties are already known,
// they can be submitted as well to reduce the number of RPC calls necessary
// later on.
// //
//MuSig2CreateSession (experimental!) creates a new MuSig2 signing session // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//using the local key identified by the key locator. The complete list of all // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//public keys of all signing parties must be provided, including the public // releases. Backward compatibility is not guaranteed!
//key of the local signing key. If nonces of other parties are already known,
//they can be submitted as well to reduce the number of RPC calls necessary
//later on.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CreateSession(context.Context, *MuSig2SessionRequest) (*MuSig2SessionResponse, error) MuSig2CreateSession(context.Context, *MuSig2SessionRequest) (*MuSig2SessionResponse, error)
// MuSig2RegisterNonces (experimental!) registers one or more public nonces of
// other signing participants for a session identified by its ID. This RPC can
// be called multiple times until all nonces are registered.
// //
//MuSig2RegisterNonces (experimental!) registers one or more public nonces of // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//other signing participants for a session identified by its ID. This RPC can // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//be called multiple times until all nonces are registered. // releases. Backward compatibility is not guaranteed!
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2RegisterNonces(context.Context, *MuSig2RegisterNoncesRequest) (*MuSig2RegisterNoncesResponse, error) MuSig2RegisterNonces(context.Context, *MuSig2RegisterNoncesRequest) (*MuSig2RegisterNoncesResponse, error)
// MuSig2Sign (experimental!) creates a partial signature using the local
// signing key that was specified when the session was created. This can only
// be called when all public nonces of all participants are known and have been
// registered with the session. If this node isn't responsible for combining
// all the partial signatures, then the cleanup flag should be set, indicating
// that the session can be removed from memory once the signature was produced.
// //
//MuSig2Sign (experimental!) creates a partial signature using the local // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//signing key that was specified when the session was created. This can only // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//be called when all public nonces of all participants are known and have been // releases. Backward compatibility is not guaranteed!
//registered with the session. If this node isn't responsible for combining
//all the partial signatures, then the cleanup flag should be set, indicating
//that the session can be removed from memory once the signature was produced.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2Sign(context.Context, *MuSig2SignRequest) (*MuSig2SignResponse, error) MuSig2Sign(context.Context, *MuSig2SignRequest) (*MuSig2SignResponse, error)
// MuSig2CombineSig (experimental!) combines the given partial signature(s)
// with the local one, if it already exists. Once a partial signature of all
// participants is registered, the final signature will be combined and
// returned.
// //
//MuSig2CombineSig (experimental!) combines the given partial signature(s) // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//with the local one, if it already exists. Once a partial signature of all // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//participants is registered, the final signature will be combined and // releases. Backward compatibility is not guaranteed!
//returned.
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2CombineSig(context.Context, *MuSig2CombineSigRequest) (*MuSig2CombineSigResponse, error) MuSig2CombineSig(context.Context, *MuSig2CombineSigRequest) (*MuSig2CombineSigResponse, error)
// MuSig2Cleanup (experimental!) allows a caller to clean up a session early in
// cases where it's obvious that the signing session won't succeed and the
// resources can be released.
// //
//MuSig2Cleanup (experimental!) allows a caller to clean up a session early in // NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//cases where it's obvious that the signing session won't succeed and the // considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//resources can be released. // releases. Backward compatibility is not guaranteed!
//
//NOTE: The MuSig2 BIP is not final yet and therefore this API must be
//considered to be HIGHLY EXPERIMENTAL and subject to change in upcoming
//releases. Backward compatibility is not guaranteed!
MuSig2Cleanup(context.Context, *MuSig2CleanupRequest) (*MuSig2CleanupResponse, error) MuSig2Cleanup(context.Context, *MuSig2CleanupRequest) (*MuSig2CleanupResponse, error)
mustEmbedUnimplementedSignerServer() mustEmbedUnimplementedSignerServer()
} }
+4 -4
View File
@@ -19,8 +19,8 @@ const _ = grpc.SupportPackageIsVersion7
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type VersionerClient interface { type VersionerClient interface {
// lncli: `version` // lncli: `version`
//GetVersion returns the current version and build information of the running // GetVersion returns the current version and build information of the running
//daemon. // daemon.
GetVersion(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*Version, error) GetVersion(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*Version, error)
} }
@@ -46,8 +46,8 @@ func (c *versionerClient) GetVersion(ctx context.Context, in *VersionRequest, op
// for forward compatibility // for forward compatibility
type VersionerServer interface { type VersionerServer interface {
// lncli: `version` // lncli: `version`
//GetVersion returns the current version and build information of the running // GetVersion returns the current version and build information of the running
//daemon. // daemon.
GetVersion(context.Context, *VersionRequest) (*Version, error) GetVersion(context.Context, *VersionRequest) (*Version, error)
mustEmbedUnimplementedVersionerServer() mustEmbedUnimplementedVersionerServer()
} }
+178 -246
View File
@@ -81,65 +81,52 @@ type WitnessType int32
const ( const (
WitnessType_UNKNOWN_WITNESS WitnessType = 0 WitnessType_UNKNOWN_WITNESS WitnessType = 0
// // A witness that allows us to spend the output of a commitment transaction
//A witness that allows us to spend the output of a commitment transaction // after a relative lock-time lockout.
//after a relative lock-time lockout.
WitnessType_COMMITMENT_TIME_LOCK WitnessType = 1 WitnessType_COMMITMENT_TIME_LOCK WitnessType = 1
// // A witness that allows us to spend a settled no-delay output immediately on a
//A witness that allows us to spend a settled no-delay output immediately on a // counterparty's commitment transaction.
//counterparty's commitment transaction.
WitnessType_COMMITMENT_NO_DELAY WitnessType = 2 WitnessType_COMMITMENT_NO_DELAY WitnessType = 2
// // A witness that allows us to sweep the settled output of a malicious
//A witness that allows us to sweep the settled output of a malicious // counterparty's who broadcasts a revoked commitment transaction.
//counterparty's who broadcasts a revoked commitment transaction.
WitnessType_COMMITMENT_REVOKE WitnessType = 3 WitnessType_COMMITMENT_REVOKE WitnessType = 3
// // A witness that allows us to sweep an HTLC which we offered to the remote
//A witness that allows us to sweep an HTLC which we offered to the remote // party in the case that they broadcast a revoked commitment state.
//party in the case that they broadcast a revoked commitment state.
WitnessType_HTLC_OFFERED_REVOKE WitnessType = 4 WitnessType_HTLC_OFFERED_REVOKE WitnessType = 4
// // A witness that allows us to sweep an HTLC output sent to us in the case that
//A witness that allows us to sweep an HTLC output sent to us in the case that // the remote party broadcasts a revoked commitment state.
//the remote party broadcasts a revoked commitment state.
WitnessType_HTLC_ACCEPTED_REVOKE WitnessType = 5 WitnessType_HTLC_ACCEPTED_REVOKE WitnessType = 5
// // A witness that allows us to sweep an HTLC output that we extended to a
//A witness that allows us to sweep an HTLC output that we extended to a // party, but was never fulfilled. This HTLC output isn't directly on the
//party, but was never fulfilled. This HTLC output isn't directly on the // commitment transaction, but is the result of a confirmed second-level HTLC
//commitment transaction, but is the result of a confirmed second-level HTLC // transaction. As a result, we can only spend this after a CSV delay.
//transaction. As a result, we can only spend this after a CSV delay.
WitnessType_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL WitnessType = 6 WitnessType_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL WitnessType = 6
// // A witness that allows us to sweep an HTLC output that was offered to us, and
//A witness that allows us to sweep an HTLC output that was offered to us, and // for which we have a payment preimage. This HTLC output isn't directly on our
//for which we have a payment preimage. This HTLC output isn't directly on our // commitment transaction, but is the result of confirmed second-level HTLC
//commitment transaction, but is the result of confirmed second-level HTLC // transaction. As a result, we can only spend this after a CSV delay.
//transaction. As a result, we can only spend this after a CSV delay.
WitnessType_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL WitnessType = 7 WitnessType_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL WitnessType = 7
// // A witness that allows us to sweep an HTLC that we offered to the remote
//A witness that allows us to sweep an HTLC that we offered to the remote // party which lies in the commitment transaction of the remote party. We can
//party which lies in the commitment transaction of the remote party. We can // spend this output after the absolute CLTV timeout of the HTLC as passed.
//spend this output after the absolute CLTV timeout of the HTLC as passed.
WitnessType_HTLC_OFFERED_REMOTE_TIMEOUT WitnessType = 8 WitnessType_HTLC_OFFERED_REMOTE_TIMEOUT WitnessType = 8
// // A witness that allows us to sweep an HTLC that was offered to us by the
//A witness that allows us to sweep an HTLC that was offered to us by the // remote party. We use this witness in the case that the remote party goes to
//remote party. We use this witness in the case that the remote party goes to // chain, and we know the pre-image to the HTLC. We can sweep this without any
//chain, and we know the pre-image to the HTLC. We can sweep this without any // additional timeout.
//additional timeout.
WitnessType_HTLC_ACCEPTED_REMOTE_SUCCESS WitnessType = 9 WitnessType_HTLC_ACCEPTED_REMOTE_SUCCESS WitnessType = 9
// // A witness that allows us to sweep an HTLC from the remote party's commitment
//A witness that allows us to sweep an HTLC from the remote party's commitment // transaction in the case that the broadcast a revoked commitment, but then
//transaction in the case that the broadcast a revoked commitment, but then // also immediately attempt to go to the second level to claim the HTLC.
//also immediately attempt to go to the second level to claim the HTLC.
WitnessType_HTLC_SECOND_LEVEL_REVOKE WitnessType = 10 WitnessType_HTLC_SECOND_LEVEL_REVOKE WitnessType = 10
// // A witness type that allows us to spend a regular p2wkh output that's sent to
//A witness type that allows us to spend a regular p2wkh output that's sent to // an output which is under complete control of the backing wallet.
//an output which is under complete control of the backing wallet.
WitnessType_WITNESS_KEY_HASH WitnessType = 11 WitnessType_WITNESS_KEY_HASH WitnessType = 11
// // A witness type that allows us to sweep an output that sends to a nested P2SH
//A witness type that allows us to sweep an output that sends to a nested P2SH // script that pays to a key solely under our control.
//script that pays to a key solely under our control.
WitnessType_NESTED_WITNESS_KEY_HASH WitnessType = 12 WitnessType_NESTED_WITNESS_KEY_HASH WitnessType = 12
// // A witness type that allows us to spend our anchor on the commitment
//A witness type that allows us to spend our anchor on the commitment // transaction.
//transaction.
WitnessType_COMMITMENT_ANCHOR WitnessType = 13 WitnessType_COMMITMENT_ANCHOR WitnessType = 13
) )
@@ -217,11 +204,10 @@ type ListUnspentRequest struct {
MaxConfs int32 `protobuf:"varint,2,opt,name=max_confs,json=maxConfs,proto3" json:"max_confs,omitempty"` MaxConfs int32 `protobuf:"varint,2,opt,name=max_confs,json=maxConfs,proto3" json:"max_confs,omitempty"`
// An optional filter to only include outputs belonging to an account. // An optional filter to only include outputs belonging to an account.
Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"`
// // When min_confs and max_confs are zero, setting false implicitly
//When min_confs and max_confs are zero, setting false implicitly // overrides max_confs to be MaxInt32, otherwise max_confs remains
//overrides max_confs to be MaxInt32, otherwise max_confs remains // zero. An error is returned if the value is true and both min_confs
//zero. An error is returned if the value is true and both min_confs // and max_confs are non-zero. (default: false)
//and max_confs are non-zero. (default: false)
UnconfirmedOnly bool `protobuf:"varint,4,opt,name=unconfirmed_only,json=unconfirmedOnly,proto3" json:"unconfirmed_only,omitempty"` UnconfirmedOnly bool `protobuf:"varint,4,opt,name=unconfirmed_only,json=unconfirmedOnly,proto3" json:"unconfirmed_only,omitempty"`
} }
@@ -338,9 +324,8 @@ type LeaseOutputRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // An ID of 32 random bytes that must be unique for each distinct application
//An ID of 32 random bytes that must be unique for each distinct application // using this RPC which will be used to bound the output lease to.
//using this RPC which will be used to bound the output lease to.
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// The identifying outpoint of the output being leased. // The identifying outpoint of the output being leased.
Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"` Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
@@ -407,8 +392,7 @@ type LeaseOutputResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The absolute expiration of the output lease represented as a unix timestamp.
//The absolute expiration of the output lease represented as a unix timestamp.
Expiration uint64 `protobuf:"varint,1,opt,name=expiration,proto3" json:"expiration,omitempty"` Expiration uint64 `protobuf:"varint,1,opt,name=expiration,proto3" json:"expiration,omitempty"`
} }
@@ -551,14 +535,12 @@ type KeyReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Is the key finger print of the root pubkey that this request is targeting.
//Is the key finger print of the root pubkey that this request is targeting. // This allows the WalletKit to possibly serve out keys for multiple HD chains
//This allows the WalletKit to possibly serve out keys for multiple HD chains // via public derivation.
//via public derivation.
KeyFingerPrint int32 `protobuf:"varint,1,opt,name=key_finger_print,json=keyFingerPrint,proto3" json:"key_finger_print,omitempty"` KeyFingerPrint int32 `protobuf:"varint,1,opt,name=key_finger_print,json=keyFingerPrint,proto3" json:"key_finger_print,omitempty"`
// // The target key family to derive a key from. In other contexts, this is
//The target key family to derive a key from. In other contexts, this is // known as the "account".
//known as the "account".
KeyFamily int32 `protobuf:"varint,2,opt,name=key_family,json=keyFamily,proto3" json:"key_family,omitempty"` KeyFamily int32 `protobuf:"varint,2,opt,name=key_family,json=keyFamily,proto3" json:"key_family,omitempty"`
} }
@@ -613,15 +595,12 @@ type AddrRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The name of the account to retrieve the next address of. If empty, the
//The name of the account to retrieve the next address of. If empty, the // default wallet account is used.
//default wallet account is used.
Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
// // The type of address to derive.
//The type of address to derive.
Type AddressType `protobuf:"varint,2,opt,name=type,proto3,enum=walletrpc.AddressType" json:"type,omitempty"` Type AddressType `protobuf:"varint,2,opt,name=type,proto3,enum=walletrpc.AddressType" json:"type,omitempty"`
// // Whether a change address should be derived.
//Whether a change address should be derived.
Change bool `protobuf:"varint,3,opt,name=change,proto3" json:"change,omitempty"` Change bool `protobuf:"varint,3,opt,name=change,proto3" json:"change,omitempty"`
} }
@@ -683,8 +662,7 @@ type AddrResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The address encoded using a bech32 format.
//The address encoded using a bech32 format.
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
} }
@@ -736,31 +714,26 @@ type Account struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The type of addresses the account supports. // The type of addresses the account supports.
AddressType AddressType `protobuf:"varint,2,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"` AddressType AddressType `protobuf:"varint,2,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"`
// // The public key backing the account that all keys are derived from
//The public key backing the account that all keys are derived from // represented as an extended key. This will always be empty for the default
//represented as an extended key. This will always be empty for the default // imported account in which single public keys are imported into.
//imported account in which single public keys are imported into.
ExtendedPublicKey string `protobuf:"bytes,3,opt,name=extended_public_key,json=extendedPublicKey,proto3" json:"extended_public_key,omitempty"` ExtendedPublicKey string `protobuf:"bytes,3,opt,name=extended_public_key,json=extendedPublicKey,proto3" json:"extended_public_key,omitempty"`
// // The fingerprint of the root key from which the account public key was
//The fingerprint of the root key from which the account public key was // derived from. This will always be zero for the default imported account in
//derived from. This will always be zero for the default imported account in // which single public keys are imported into. The bytes are in big-endian
//which single public keys are imported into. The bytes are in big-endian // order.
//order.
MasterKeyFingerprint []byte `protobuf:"bytes,4,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"` MasterKeyFingerprint []byte `protobuf:"bytes,4,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"`
// // The derivation path corresponding to the account public key. This will
//The derivation path corresponding to the account public key. This will // always be empty for the default imported account in which single public keys
//always be empty for the default imported account in which single public keys // are imported into.
//are imported into.
DerivationPath string `protobuf:"bytes,5,opt,name=derivation_path,json=derivationPath,proto3" json:"derivation_path,omitempty"` DerivationPath string `protobuf:"bytes,5,opt,name=derivation_path,json=derivationPath,proto3" json:"derivation_path,omitempty"`
// // The number of keys derived from the external branch of the account public
//The number of keys derived from the external branch of the account public // key. This will always be zero for the default imported account in which
//key. This will always be zero for the default imported account in which // single public keys are imported into.
//single public keys are imported into.
ExternalKeyCount uint32 `protobuf:"varint,6,opt,name=external_key_count,json=externalKeyCount,proto3" json:"external_key_count,omitempty"` ExternalKeyCount uint32 `protobuf:"varint,6,opt,name=external_key_count,json=externalKeyCount,proto3" json:"external_key_count,omitempty"`
// // The number of keys derived from the internal branch of the account public
//The number of keys derived from the internal branch of the account public // key. This will always be zero for the default imported account in which
//key. This will always be zero for the default imported account in which // single public keys are imported into.
//single public keys are imported into.
InternalKeyCount uint32 `protobuf:"varint,7,opt,name=internal_key_count,json=internalKeyCount,proto3" json:"internal_key_count,omitempty"` InternalKeyCount uint32 `protobuf:"varint,7,opt,name=internal_key_count,json=internalKeyCount,proto3" json:"internal_key_count,omitempty"`
// Whether the wallet stores private keys for the account. // Whether the wallet stores private keys for the account.
WatchOnly bool `protobuf:"varint,8,opt,name=watch_only,json=watchOnly,proto3" json:"watch_only,omitempty"` WatchOnly bool `protobuf:"varint,8,opt,name=watch_only,json=watchOnly,proto3" json:"watch_only,omitempty"`
@@ -859,15 +832,14 @@ type AddressProperty struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// The address encoded using the appropriate format depending on the
// address type (base58, bech32, bech32m).
// //
//The address encoded using the appropriate format depending on the // Note that lnd's internal/custom keys for channels and other
//address type (base58, bech32, bech32m). // functionality are derived from the same scope. Since they
// // aren't really used as addresses and will never have an
//Note that lnd's internal/custom keys for channels and other // on-chain balance, we'll show the public key instead (only if
//functionality are derived from the same scope. Since they // the show_custom_accounts flag is provided).
//aren't really used as addresses and will never have an
//on-chain balance, we'll show the public key instead (only if
//the show_custom_accounts flag is provided).
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
// Denotes if the address is a change address. // Denotes if the address is a change address.
IsInternal bool `protobuf:"varint,2,opt,name=is_internal,json=isInternal,proto3" json:"is_internal,omitempty"` IsInternal bool `protobuf:"varint,2,opt,name=is_internal,json=isInternal,proto3" json:"is_internal,omitempty"`
@@ -937,16 +909,14 @@ type AccountWithAddresses struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The type of addresses the account supports. // The type of addresses the account supports.
AddressType AddressType `protobuf:"varint,2,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"` AddressType AddressType `protobuf:"varint,2,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"`
// // The derivation path corresponding to the account public key. This will
//The derivation path corresponding to the account public key. This will // always be empty for the default imported account in which single public keys
//always be empty for the default imported account in which single public keys // are imported into.
//are imported into.
DerivationPath string `protobuf:"bytes,3,opt,name=derivation_path,json=derivationPath,proto3" json:"derivation_path,omitempty"` DerivationPath string `protobuf:"bytes,3,opt,name=derivation_path,json=derivationPath,proto3" json:"derivation_path,omitempty"`
// // List of address, its type internal/external & balance.
//List of address, its type internal/external & balance. // Note that the order of addresses will be random and not according to the
//Note that the order of addresses will be random and not according to the // derivation index, since that information is not stored by the underlying
//derivation index, since that information is not stored by the underlying // wallet.
//wallet.
Addresses []*AddressProperty `protobuf:"bytes,4,rep,name=addresses,proto3" json:"addresses,omitempty"` Addresses []*AddressProperty `protobuf:"bytes,4,rep,name=addresses,proto3" json:"addresses,omitempty"`
} }
@@ -1323,28 +1293,24 @@ type ImportAccountRequest struct {
// A name to identify the account with. // A name to identify the account with.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// // A public key that corresponds to a wallet account represented as an extended
//A public key that corresponds to a wallet account represented as an extended // key. It must conform to a derivation path of the form
//key. It must conform to a derivation path of the form // m/purpose'/coin_type'/account'.
//m/purpose'/coin_type'/account'.
ExtendedPublicKey string `protobuf:"bytes,2,opt,name=extended_public_key,json=extendedPublicKey,proto3" json:"extended_public_key,omitempty"` ExtendedPublicKey string `protobuf:"bytes,2,opt,name=extended_public_key,json=extendedPublicKey,proto3" json:"extended_public_key,omitempty"`
// // The fingerprint of the root key (also known as the key with derivation path
//The fingerprint of the root key (also known as the key with derivation path // m/) from which the account public key was derived from. This may be required
//m/) from which the account public key was derived from. This may be required // by some hardware wallets for proper identification and signing. The bytes
//by some hardware wallets for proper identification and signing. The bytes // must be in big-endian order.
//must be in big-endian order.
MasterKeyFingerprint []byte `protobuf:"bytes,3,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"` MasterKeyFingerprint []byte `protobuf:"bytes,3,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"`
// // An address type is only required when the extended account public key has a
//An address type is only required when the extended account public key has a // legacy version (xpub, tpub, etc.), such that the wallet cannot detect what
//legacy version (xpub, tpub, etc.), such that the wallet cannot detect what // address scheme it belongs to.
//address scheme it belongs to.
AddressType AddressType `protobuf:"varint,4,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"` AddressType AddressType `protobuf:"varint,4,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"`
// // Whether a dry run should be attempted when importing the account. This
//Whether a dry run should be attempted when importing the account. This // serves as a way to confirm whether the account is being imported correctly
//serves as a way to confirm whether the account is being imported correctly // by returning the first N addresses for the external and internal branches of
//by returning the first N addresses for the external and internal branches of // the account. If these addresses match as expected, then it should be safe to
//the account. If these addresses match as expected, then it should be safe to // import the account as is.
//import the account as is.
DryRun bool `protobuf:"varint,5,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` DryRun bool `protobuf:"varint,5,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
} }
@@ -1422,15 +1388,13 @@ type ImportAccountResponse struct {
// The details of the imported account. // The details of the imported account.
Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
// // The first N addresses that belong to the external branch of the account.
//The first N addresses that belong to the external branch of the account. // The external branch is typically used for external non-change addresses.
//The external branch is typically used for external non-change addresses. // These are only returned if a dry run was specified within the request.
//These are only returned if a dry run was specified within the request.
DryRunExternalAddrs []string `protobuf:"bytes,2,rep,name=dry_run_external_addrs,json=dryRunExternalAddrs,proto3" json:"dry_run_external_addrs,omitempty"` DryRunExternalAddrs []string `protobuf:"bytes,2,rep,name=dry_run_external_addrs,json=dryRunExternalAddrs,proto3" json:"dry_run_external_addrs,omitempty"`
// // The first N addresses that belong to the internal branch of the account.
//The first N addresses that belong to the internal branch of the account. // The internal branch is typically used for change addresses. These are only
//The internal branch is typically used for change addresses. These are only // returned if a dry run was specified within the request.
//returned if a dry run was specified within the request.
DryRunInternalAddrs []string `protobuf:"bytes,3,rep,name=dry_run_internal_addrs,json=dryRunInternalAddrs,proto3" json:"dry_run_internal_addrs,omitempty"` DryRunInternalAddrs []string `protobuf:"bytes,3,rep,name=dry_run_internal_addrs,json=dryRunInternalAddrs,proto3" json:"dry_run_internal_addrs,omitempty"`
} }
@@ -1587,11 +1551,9 @@ type Transaction struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The raw serialized transaction.
//The raw serialized transaction.
TxHex []byte `protobuf:"bytes,1,opt,name=tx_hex,json=txHex,proto3" json:"tx_hex,omitempty"` TxHex []byte `protobuf:"bytes,1,opt,name=tx_hex,json=txHex,proto3" json:"tx_hex,omitempty"`
// // An optional label to save with the transaction. Limited to 500 characters.
//An optional label to save with the transaction. Limited to 500 characters.
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
} }
@@ -1646,12 +1608,11 @@ type PublishResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// If blank, then no error occurred and the transaction was successfully
// published. If not the empty string, then a string representation of the
// broadcast error.
// //
//If blank, then no error occurred and the transaction was successfully // TODO(roasbeef): map to a proper enum type
//published. If not the empty string, then a string representation of the
//broadcast error.
//
//TODO(roasbeef): map to a proper enum type
PublishError string `protobuf:"bytes,1,opt,name=publish_error,json=publishError,proto3" json:"publish_error,omitempty"` PublishError string `protobuf:"bytes,1,opt,name=publish_error,json=publishError,proto3" json:"publish_error,omitempty"`
} }
@@ -1699,12 +1660,10 @@ type SendOutputsRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The number of satoshis per kilo weight that should be used when crafting
//The number of satoshis per kilo weight that should be used when crafting // this transaction.
//this transaction.
SatPerKw int64 `protobuf:"varint,1,opt,name=sat_per_kw,json=satPerKw,proto3" json:"sat_per_kw,omitempty"` SatPerKw int64 `protobuf:"varint,1,opt,name=sat_per_kw,json=satPerKw,proto3" json:"sat_per_kw,omitempty"`
// // A slice of the outputs that should be created in the transaction produced.
//A slice of the outputs that should be created in the transaction produced.
Outputs []*signrpc.TxOut `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty"` Outputs []*signrpc.TxOut `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty"`
// An optional label for the transaction, limited to 500 characters. // An optional label for the transaction, limited to 500 characters.
Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty"` Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty"`
@@ -1787,8 +1746,7 @@ type SendOutputsResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The serialized transaction sent out on the network.
//The serialized transaction sent out on the network.
RawTx []byte `protobuf:"bytes,1,opt,name=raw_tx,json=rawTx,proto3" json:"raw_tx,omitempty"` RawTx []byte `protobuf:"bytes,1,opt,name=raw_tx,json=rawTx,proto3" json:"raw_tx,omitempty"`
} }
@@ -1836,8 +1794,7 @@ type EstimateFeeRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The number of confirmations to shoot for when estimating the fee.
//The number of confirmations to shoot for when estimating the fee.
ConfTarget int32 `protobuf:"varint,1,opt,name=conf_target,json=confTarget,proto3" json:"conf_target,omitempty"` ConfTarget int32 `protobuf:"varint,1,opt,name=conf_target,json=confTarget,proto3" json:"conf_target,omitempty"`
} }
@@ -1885,9 +1842,8 @@ type EstimateFeeResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The amount of satoshis per kw that should be used in order to reach the
//The amount of satoshis per kw that should be used in order to reach the // confirmation target in the request.
//confirmation target in the request.
SatPerKw int64 `protobuf:"varint,1,opt,name=sat_per_kw,json=satPerKw,proto3" json:"sat_per_kw,omitempty"` SatPerKw int64 `protobuf:"varint,1,opt,name=sat_per_kw,json=satPerKw,proto3" json:"sat_per_kw,omitempty"`
} }
@@ -1941,19 +1897,17 @@ type PendingSweep struct {
WitnessType WitnessType `protobuf:"varint,2,opt,name=witness_type,json=witnessType,proto3,enum=walletrpc.WitnessType" json:"witness_type,omitempty"` WitnessType WitnessType `protobuf:"varint,2,opt,name=witness_type,json=witnessType,proto3,enum=walletrpc.WitnessType" json:"witness_type,omitempty"`
// The value of the output we're attempting to sweep. // The value of the output we're attempting to sweep.
AmountSat uint32 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"` AmountSat uint32 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"`
// // Deprecated, use sat_per_vbyte.
//Deprecated, use sat_per_vbyte. // The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
//The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee // rate is only determined once a sweeping transaction for the output is
//rate is only determined once a sweeping transaction for the output is // created, so it's possible for this to be 0 before this.
//created, so it's possible for this to be 0 before this.
// //
// Deprecated: Do not use. // Deprecated: Do not use.
SatPerByte uint32 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte uint32 `protobuf:"varint,4,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"`
// The number of broadcast attempts we've made to sweep the output. // The number of broadcast attempts we've made to sweep the output.
BroadcastAttempts uint32 `protobuf:"varint,5,opt,name=broadcast_attempts,json=broadcastAttempts,proto3" json:"broadcast_attempts,omitempty"` BroadcastAttempts uint32 `protobuf:"varint,5,opt,name=broadcast_attempts,json=broadcastAttempts,proto3" json:"broadcast_attempts,omitempty"`
// // The next height of the chain at which we'll attempt to broadcast the
//The next height of the chain at which we'll attempt to broadcast the // sweep transaction of the output.
//sweep transaction of the output.
NextBroadcastHeight uint32 `protobuf:"varint,6,opt,name=next_broadcast_height,json=nextBroadcastHeight,proto3" json:"next_broadcast_height,omitempty"` NextBroadcastHeight uint32 `protobuf:"varint,6,opt,name=next_broadcast_height,json=nextBroadcastHeight,proto3" json:"next_broadcast_height,omitempty"`
// The requested confirmation target for this output. // The requested confirmation target for this output.
RequestedConfTarget uint32 `protobuf:"varint,8,opt,name=requested_conf_target,json=requestedConfTarget,proto3" json:"requested_conf_target,omitempty"` RequestedConfTarget uint32 `protobuf:"varint,8,opt,name=requested_conf_target,json=requestedConfTarget,proto3" json:"requested_conf_target,omitempty"`
@@ -1962,16 +1916,14 @@ type PendingSweep struct {
// //
// Deprecated: Do not use. // Deprecated: Do not use.
RequestedSatPerByte uint32 `protobuf:"varint,9,opt,name=requested_sat_per_byte,json=requestedSatPerByte,proto3" json:"requested_sat_per_byte,omitempty"` RequestedSatPerByte uint32 `protobuf:"varint,9,opt,name=requested_sat_per_byte,json=requestedSatPerByte,proto3" json:"requested_sat_per_byte,omitempty"`
// // The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee
//The fee rate we'll use to sweep the output, expressed in sat/vbyte. The fee // rate is only determined once a sweeping transaction for the output is
//rate is only determined once a sweeping transaction for the output is // created, so it's possible for this to be 0 before this.
//created, so it's possible for this to be 0 before this.
SatPerVbyte uint64 `protobuf:"varint,10,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"` SatPerVbyte uint64 `protobuf:"varint,10,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
// The requested fee rate, expressed in sat/vbyte, for this output. // The requested fee rate, expressed in sat/vbyte, for this output.
RequestedSatPerVbyte uint64 `protobuf:"varint,11,opt,name=requested_sat_per_vbyte,json=requestedSatPerVbyte,proto3" json:"requested_sat_per_vbyte,omitempty"` RequestedSatPerVbyte uint64 `protobuf:"varint,11,opt,name=requested_sat_per_vbyte,json=requestedSatPerVbyte,proto3" json:"requested_sat_per_vbyte,omitempty"`
// // Whether this input must be force-swept. This means that it is swept even
//Whether this input must be force-swept. This means that it is swept even // if it has a negative yield.
//if it has a negative yield.
Force bool `protobuf:"varint,7,opt,name=force,proto3" json:"force,omitempty"` Force bool `protobuf:"varint,7,opt,name=force,proto3" json:"force,omitempty"`
} }
@@ -2129,8 +2081,7 @@ type PendingSweepsResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The set of outputs currently being swept by lnd's central batching engine.
//The set of outputs currently being swept by lnd's central batching engine.
PendingSweeps []*PendingSweep `protobuf:"bytes,1,rep,name=pending_sweeps,json=pendingSweeps,proto3" json:"pending_sweeps,omitempty"` PendingSweeps []*PendingSweep `protobuf:"bytes,1,rep,name=pending_sweeps,json=pendingSweeps,proto3" json:"pending_sweeps,omitempty"`
} }
@@ -2182,20 +2133,17 @@ type BumpFeeRequest struct {
Outpoint *lnrpc.OutPoint `protobuf:"bytes,1,opt,name=outpoint,proto3" json:"outpoint,omitempty"` Outpoint *lnrpc.OutPoint `protobuf:"bytes,1,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
// The target number of blocks that the input should be spent within. // The target number of blocks that the input should be spent within.
TargetConf uint32 `protobuf:"varint,2,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"` TargetConf uint32 `protobuf:"varint,2,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
// // Deprecated, use sat_per_vbyte.
//Deprecated, use sat_per_vbyte. // The fee rate, expressed in sat/vbyte, that should be used to spend the input
//The fee rate, expressed in sat/vbyte, that should be used to spend the input // with.
//with.
// //
// Deprecated: Do not use. // Deprecated: Do not use.
SatPerByte uint32 `protobuf:"varint,3,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"` SatPerByte uint32 `protobuf:"varint,3,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"`
// // Whether this input must be force-swept. This means that it is swept even
//Whether this input must be force-swept. This means that it is swept even // if it has a negative yield.
//if it has a negative yield.
Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
// // The fee rate, expressed in sat/vbyte, that should be used to spend the input
//The fee rate, expressed in sat/vbyte, that should be used to spend the input // with.
//with.
SatPerVbyte uint64 `protobuf:"varint,5,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"` SatPerVbyte uint64 `protobuf:"varint,5,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
} }
@@ -2310,10 +2258,9 @@ type ListSweepsRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Retrieve the full sweep transaction details. If false, only the sweep txids
//Retrieve the full sweep transaction details. If false, only the sweep txids // will be returned. Note that some sweeps that LND publishes will have been
//will be returned. Note that some sweeps that LND publishes will have been // replaced-by-fee, so will not be included in this output.
//replaced-by-fee, so will not be included in this output.
Verbose bool `protobuf:"varint,1,opt,name=verbose,proto3" json:"verbose,omitempty"` Verbose bool `protobuf:"varint,1,opt,name=verbose,proto3" json:"verbose,omitempty"`
} }
@@ -2362,6 +2309,7 @@ type ListSweepsResponse struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Types that are assignable to Sweeps: // Types that are assignable to Sweeps:
//
// *ListSweepsResponse_TransactionDetails // *ListSweepsResponse_TransactionDetails
// *ListSweepsResponse_TransactionIds // *ListSweepsResponse_TransactionIds
Sweeps isListSweepsResponse_Sweeps `protobuf_oneof:"sweeps"` Sweeps isListSweepsResponse_Sweeps `protobuf_oneof:"sweeps"`
@@ -2546,16 +2494,17 @@ type FundPsbtRequest struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// Types that are assignable to Template: // Types that are assignable to Template:
//
// *FundPsbtRequest_Psbt // *FundPsbtRequest_Psbt
// *FundPsbtRequest_Raw // *FundPsbtRequest_Raw
Template isFundPsbtRequest_Template `protobuf_oneof:"template"` Template isFundPsbtRequest_Template `protobuf_oneof:"template"`
// Types that are assignable to Fees: // Types that are assignable to Fees:
//
// *FundPsbtRequest_TargetConf // *FundPsbtRequest_TargetConf
// *FundPsbtRequest_SatPerVbyte // *FundPsbtRequest_SatPerVbyte
Fees isFundPsbtRequest_Fees `protobuf_oneof:"fees"` Fees isFundPsbtRequest_Fees `protobuf_oneof:"fees"`
// // The name of the account to fund the PSBT with. If empty, the default wallet
//The name of the account to fund the PSBT with. If empty, the default wallet // account is used.
//account is used.
Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"` Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
// The minimum number of confirmations each one of your outputs used for // The minimum number of confirmations each one of your outputs used for
// the transaction must satisfy. // the transaction must satisfy.
@@ -2664,21 +2613,19 @@ type isFundPsbtRequest_Template interface {
} }
type FundPsbtRequest_Psbt struct { type FundPsbtRequest_Psbt struct {
// Use an existing PSBT packet as the template for the funded PSBT.
// //
//Use an existing PSBT packet as the template for the funded PSBT. // The packet must contain at least one non-dust output. If one or more
// // inputs are specified, no coin selection is performed. In that case every
//The packet must contain at least one non-dust output. If one or more // input must be an UTXO known to the wallet that has not been locked
//inputs are specified, no coin selection is performed. In that case every // before. The sum of all inputs must be sufficiently greater than the sum
//input must be an UTXO known to the wallet that has not been locked // of all outputs to pay a miner fee with the specified fee rate. A change
//before. The sum of all inputs must be sufficiently greater than the sum // output is added to the PSBT if necessary.
//of all outputs to pay a miner fee with the specified fee rate. A change
//output is added to the PSBT if necessary.
Psbt []byte `protobuf:"bytes,1,opt,name=psbt,proto3,oneof"` Psbt []byte `protobuf:"bytes,1,opt,name=psbt,proto3,oneof"`
} }
type FundPsbtRequest_Raw struct { type FundPsbtRequest_Raw struct {
// // Use the outputs and optional inputs from this raw template.
//Use the outputs and optional inputs from this raw template.
Raw *TxTemplate `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` Raw *TxTemplate `protobuf:"bytes,2,opt,name=raw,proto3,oneof"`
} }
@@ -2691,15 +2638,13 @@ type isFundPsbtRequest_Fees interface {
} }
type FundPsbtRequest_TargetConf struct { type FundPsbtRequest_TargetConf struct {
// // The target number of blocks that the transaction should be confirmed in.
//The target number of blocks that the transaction should be confirmed in.
TargetConf uint32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3,oneof"` TargetConf uint32 `protobuf:"varint,3,opt,name=target_conf,json=targetConf,proto3,oneof"`
} }
type FundPsbtRequest_SatPerVbyte struct { type FundPsbtRequest_SatPerVbyte struct {
// // The fee rate, expressed in sat/vbyte, that should be used to spend the
//The fee rate, expressed in sat/vbyte, that should be used to spend the // input with.
//input with.
SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof"` SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof"`
} }
@@ -2712,15 +2657,12 @@ type FundPsbtResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The funded but not yet signed PSBT packet.
//The funded but not yet signed PSBT packet.
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"` FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
// // The index of the added change output or -1 if no change was left over.
//The index of the added change output or -1 if no change was left over.
ChangeOutputIndex int32 `protobuf:"varint,2,opt,name=change_output_index,json=changeOutputIndex,proto3" json:"change_output_index,omitempty"` ChangeOutputIndex int32 `protobuf:"varint,2,opt,name=change_output_index,json=changeOutputIndex,proto3" json:"change_output_index,omitempty"`
// // The list of lock leases that were acquired for the inputs in the funded PSBT
//The list of lock leases that were acquired for the inputs in the funded PSBT // packet.
//packet.
LockedUtxos []*UtxoLease `protobuf:"bytes,3,rep,name=locked_utxos,json=lockedUtxos,proto3" json:"locked_utxos,omitempty"` LockedUtxos []*UtxoLease `protobuf:"bytes,3,rep,name=locked_utxos,json=lockedUtxos,proto3" json:"locked_utxos,omitempty"`
} }
@@ -2782,17 +2724,15 @@ type TxTemplate struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// An optional list of inputs to use. Every input must be an UTXO known to the
// wallet that has not been locked before. The sum of all inputs must be
// sufficiently greater than the sum of all outputs to pay a miner fee with the
// fee rate specified in the parent message.
// //
//An optional list of inputs to use. Every input must be an UTXO known to the // If no inputs are specified, coin selection will be performed instead and
//wallet that has not been locked before. The sum of all inputs must be // inputs of sufficient value will be added to the resulting PSBT.
//sufficiently greater than the sum of all outputs to pay a miner fee with the
//fee rate specified in the parent message.
//
//If no inputs are specified, coin selection will be performed instead and
//inputs of sufficient value will be added to the resulting PSBT.
Inputs []*lnrpc.OutPoint `protobuf:"bytes,1,rep,name=inputs,proto3" json:"inputs,omitempty"` Inputs []*lnrpc.OutPoint `protobuf:"bytes,1,rep,name=inputs,proto3" json:"inputs,omitempty"`
// // A map of all addresses and the amounts to send to in the funded PSBT.
//A map of all addresses and the amounts to send to in the funded PSBT.
Outputs map[string]uint64 `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` Outputs map[string]uint64 `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
} }
@@ -2847,19 +2787,15 @@ type UtxoLease struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A 32 byte random ID that identifies the lease.
//A 32 byte random ID that identifies the lease.
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// The identifying outpoint of the output being leased. // The identifying outpoint of the output being leased.
Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"` Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
// // The absolute expiration of the output lease represented as a unix timestamp.
//The absolute expiration of the output lease represented as a unix timestamp.
Expiration uint64 `protobuf:"varint,3,opt,name=expiration,proto3" json:"expiration,omitempty"` Expiration uint64 `protobuf:"varint,3,opt,name=expiration,proto3" json:"expiration,omitempty"`
// // The public key script of the leased output.
//The public key script of the leased output.
PkScript []byte `protobuf:"bytes,4,opt,name=pk_script,json=pkScript,proto3" json:"pk_script,omitempty"` PkScript []byte `protobuf:"bytes,4,opt,name=pk_script,json=pkScript,proto3" json:"pk_script,omitempty"`
// // The value of the leased output in satoshis.
//The value of the leased output in satoshis.
Value uint64 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"` Value uint64 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
} }
@@ -2935,9 +2871,8 @@ type SignPsbtRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The PSBT that should be signed. The PSBT must contain all required inputs,
//The PSBT that should be signed. The PSBT must contain all required inputs, // outputs, UTXO data and custom fields required to identify the signing key.
//outputs, UTXO data and custom fields required to identify the signing key.
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"` FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
} }
@@ -3042,14 +2977,12 @@ type FinalizePsbtRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // A PSBT that should be signed and finalized. The PSBT must contain all
//A PSBT that should be signed and finalized. The PSBT must contain all // required inputs, outputs, UTXO data and partial signatures of all other
//required inputs, outputs, UTXO data and partial signatures of all other // signers.
//signers.
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"` FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
// // The name of the account to finalize the PSBT with. If empty, the default
//The name of the account to finalize the PSBT with. If empty, the default // wallet account is used.
//wallet account is used.
Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"` Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
} }
@@ -3247,10 +3180,9 @@ type ListSweepsResponse_TransactionIDs struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Reversed, hex-encoded string representing the transaction ids of the
//Reversed, hex-encoded string representing the transaction ids of the // sweeps that our node has broadcast. Note that these transactions may
//sweeps that our node has broadcast. Note that these transactions may // not have confirmed yet, we record sweeps on broadcast, not confirmation.
//not have confirmed yet, we record sweeps on broadcast, not confirmation.
TransactionIds []string `protobuf:"bytes,1,rep,name=transaction_ids,json=transactionIds,proto3" json:"transaction_ids,omitempty"` TransactionIds []string `protobuf:"bytes,1,rep,name=transaction_ids,json=transactionIds,proto3" json:"transaction_ids,omitempty"`
} }
+262 -306
View File
@@ -19,195 +19,173 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WalletKitClient interface { type WalletKitClient interface {
// // ListUnspent returns a list of all utxos spendable by the wallet with a
//ListUnspent returns a list of all utxos spendable by the wallet with a // number of confirmations between the specified minimum and maximum. By
//number of confirmations between the specified minimum and maximum. By // default, all utxos are listed. To list only the unconfirmed utxos, set
//default, all utxos are listed. To list only the unconfirmed utxos, set // the unconfirmed_only to true.
//the unconfirmed_only to true.
ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error) ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error)
// // LeaseOutput locks an output to the given ID, preventing it from being
//LeaseOutput locks an output to the given ID, preventing it from being // available for any future coin selection attempts. The absolute time of the
//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
//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
//successive invocations of this RPC. Outputs can be unlocked before their // expiration through `ReleaseOutput`.
//expiration through `ReleaseOutput`.
LeaseOutput(ctx context.Context, in *LeaseOutputRequest, opts ...grpc.CallOption) (*LeaseOutputResponse, error) LeaseOutput(ctx context.Context, in *LeaseOutputRequest, opts ...grpc.CallOption) (*LeaseOutputResponse, error)
// // ReleaseOutput unlocks an output, allowing it to be available for coin
//ReleaseOutput unlocks an output, allowing it to be available for coin // selection if it remains unspent. The ID should match the one used to
//selection if it remains unspent. The ID should match the one used to // originally lock the output.
//originally lock the output.
ReleaseOutput(ctx context.Context, in *ReleaseOutputRequest, opts ...grpc.CallOption) (*ReleaseOutputResponse, error) ReleaseOutput(ctx context.Context, in *ReleaseOutputRequest, opts ...grpc.CallOption) (*ReleaseOutputResponse, error)
// // ListLeases lists all currently locked utxos.
//ListLeases lists all currently locked utxos.
ListLeases(ctx context.Context, in *ListLeasesRequest, opts ...grpc.CallOption) (*ListLeasesResponse, error) ListLeases(ctx context.Context, in *ListLeasesRequest, opts ...grpc.CallOption) (*ListLeasesResponse, error)
// // DeriveNextKey attempts to derive the *next* key within the key family
//DeriveNextKey attempts to derive the *next* key within the key family // (account in BIP43) specified. This method should return the next external
//(account in BIP43) specified. This method should return the next external // child within this branch.
//child within this branch.
DeriveNextKey(ctx context.Context, in *KeyReq, opts ...grpc.CallOption) (*signrpc.KeyDescriptor, error) DeriveNextKey(ctx context.Context, in *KeyReq, opts ...grpc.CallOption) (*signrpc.KeyDescriptor, error)
// // DeriveKey attempts to derive an arbitrary key specified by the passed
//DeriveKey attempts to derive an arbitrary key specified by the passed // KeyLocator.
//KeyLocator.
DeriveKey(ctx context.Context, in *signrpc.KeyLocator, opts ...grpc.CallOption) (*signrpc.KeyDescriptor, error) DeriveKey(ctx context.Context, in *signrpc.KeyLocator, opts ...grpc.CallOption) (*signrpc.KeyDescriptor, error)
// // NextAddr returns the next unused address within the wallet.
//NextAddr returns the next unused address within the wallet.
NextAddr(ctx context.Context, in *AddrRequest, opts ...grpc.CallOption) (*AddrResponse, error) NextAddr(ctx context.Context, in *AddrRequest, opts ...grpc.CallOption) (*AddrResponse, error)
// // ListAccounts retrieves all accounts belonging to the wallet by default. A
//ListAccounts retrieves all accounts belonging to the wallet by default. A // name and key scope filter can be provided to filter through all of the
//name and key scope filter can be provided to filter through all of the // wallet accounts and return only those matching.
//wallet accounts and return only those matching.
ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...grpc.CallOption) (*ListAccountsResponse, error) ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...grpc.CallOption) (*ListAccountsResponse, error)
// // RequiredReserve returns the minimum amount of satoshis that should be kept
//RequiredReserve returns the minimum amount of satoshis that should be kept // in the wallet in order to fee bump anchor channels if necessary. The value
//in the wallet in order to fee bump anchor channels if necessary. The value // scales with the number of public anchor channels but is capped at a maximum.
//scales with the number of public anchor channels but is capped at a maximum.
RequiredReserve(ctx context.Context, in *RequiredReserveRequest, opts ...grpc.CallOption) (*RequiredReserveResponse, error) RequiredReserve(ctx context.Context, in *RequiredReserveRequest, opts ...grpc.CallOption) (*RequiredReserveResponse, error)
// // ListAddresses retrieves all the addresses along with their balance. An
//ListAddresses retrieves all the addresses along with their balance. An // account name filter can be provided to filter through all of the
//account name filter can be provided to filter through all of the // wallet accounts and return the addresses of only those matching.
//wallet accounts and return the addresses of only those matching.
ListAddresses(ctx context.Context, in *ListAddressesRequest, opts ...grpc.CallOption) (*ListAddressesResponse, error) ListAddresses(ctx context.Context, in *ListAddressesRequest, opts ...grpc.CallOption) (*ListAddressesResponse, error)
// ImportAccount imports an account backed by an account extended public key.
// The master key fingerprint denotes the fingerprint of the root key
// corresponding to the account public key (also known as the key with
// derivation path m/). This may be required by some hardware wallets for
// proper identification and signing.
// //
//ImportAccount imports an account backed by an account extended public key. // The address type can usually be inferred from the key's version, but may be
//The master key fingerprint denotes the fingerprint of the root key // required for certain keys to map them into the proper scope.
//corresponding to the account public key (also known as the key with
//derivation path m/). This may be required by some hardware wallets for
//proper identification and signing.
// //
//The address type can usually be inferred from the key's version, but may be // For BIP-0044 keys, an address type must be specified as we intend to not
//required for certain keys to map them into the proper scope. // support importing BIP-0044 keys into the wallet using the legacy
// pay-to-pubkey-hash (P2PKH) scheme. A nested witness address type will force
// the standard BIP-0049 derivation scheme, while a witness address type will
// force the standard BIP-0084 derivation scheme.
// //
//For BIP-0044 keys, an address type must be specified as we intend to not // For BIP-0049 keys, an address type must also be specified to make a
//support importing BIP-0044 keys into the wallet using the legacy // distinction between the standard BIP-0049 address schema (nested witness
//pay-to-pubkey-hash (P2PKH) scheme. A nested witness address type will force // pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
//the standard BIP-0049 derivation scheme, while a witness address type will // externally, witness pubkeys internally).
//force the standard BIP-0084 derivation scheme.
// //
//For BIP-0049 keys, an address type must also be specified to make a // NOTE: Events (deposits/spends) for keys derived from an account will only be
//distinction between the standard BIP-0049 address schema (nested witness // detected by lnd if they happen after the import. Rescans to detect past
//pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys // events will be supported later on.
//externally, witness pubkeys internally).
//
//NOTE: Events (deposits/spends) for keys derived from an account will only be
//detected by lnd if they happen after the import. Rescans to detect past
//events will be supported later on.
ImportAccount(ctx context.Context, in *ImportAccountRequest, opts ...grpc.CallOption) (*ImportAccountResponse, error) ImportAccount(ctx context.Context, in *ImportAccountRequest, opts ...grpc.CallOption) (*ImportAccountResponse, error)
// ImportPublicKey imports a public key as watch-only into the wallet.
// //
//ImportPublicKey imports a public key as watch-only into the wallet. // NOTE: Events (deposits/spends) for a key will only be detected by lnd if
// // they happen after the import. Rescans to detect past events will be
//NOTE: Events (deposits/spends) for a key will only be detected by lnd if // supported later on.
//they happen after the import. Rescans to detect past events will be
//supported later on.
ImportPublicKey(ctx context.Context, in *ImportPublicKeyRequest, opts ...grpc.CallOption) (*ImportPublicKeyResponse, error) ImportPublicKey(ctx context.Context, in *ImportPublicKeyRequest, opts ...grpc.CallOption) (*ImportPublicKeyResponse, error)
// // PublishTransaction attempts to publish the passed transaction to the
//PublishTransaction attempts to publish the passed transaction to the // network. Once this returns without an error, the wallet will continually
//network. Once this returns without an error, the wallet will continually // attempt to re-broadcast the transaction on start up, until it enters the
//attempt to re-broadcast the transaction on start up, until it enters the // chain.
//chain.
PublishTransaction(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*PublishResponse, error) PublishTransaction(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*PublishResponse, error)
// // SendOutputs is similar to the existing sendmany call in Bitcoind, and
//SendOutputs is similar to the existing sendmany call in Bitcoind, and // allows the caller to create a transaction that sends to several outputs at
//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.
//once. This is ideal when wanting to batch create a set of transactions.
SendOutputs(ctx context.Context, in *SendOutputsRequest, opts ...grpc.CallOption) (*SendOutputsResponse, error) SendOutputs(ctx context.Context, in *SendOutputsRequest, opts ...grpc.CallOption) (*SendOutputsResponse, error)
// // EstimateFee attempts to query the internal fee estimator of the wallet to
//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
//determine the fee (in sat/kw) to attach to a transaction in order to // achieve the confirmation target.
//achieve the confirmation target.
EstimateFee(ctx context.Context, in *EstimateFeeRequest, opts ...grpc.CallOption) (*EstimateFeeResponse, error) EstimateFee(ctx context.Context, in *EstimateFeeRequest, opts ...grpc.CallOption) (*EstimateFeeResponse, error)
// 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.
// //
//PendingSweeps returns lists of on-chain outputs that lnd is currently // NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
//attempting to sweep within its central batching engine. Outputs with similar // remain supported. This is an advanced API that depends on the internals of
//fee rates are batched together in order to sweep them within a single // the UtxoSweeper, so things may change.
//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.
PendingSweeps(ctx context.Context, in *PendingSweepsRequest, opts ...grpc.CallOption) (*PendingSweepsResponse, error) PendingSweeps(ctx context.Context, in *PendingSweepsRequest, opts ...grpc.CallOption) (*PendingSweepsResponse, error)
// 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.
// //
//BumpFee bumps the fee of an arbitrary input within a transaction. This RPC // When bumping the fee of an input that currently exists within lnd's central
//takes a different approach than bitcoind's bumpfee command. lnd has a // batching engine, a higher fee transaction will be created that replaces the
//central batching engine in which inputs with similar fee rates are batched // lower fee transaction through the Replace-By-Fee (RBF) policy. If it
//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 // This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
//batching engine, a higher fee transaction will be created that replaces the // (CPFP), where the child transaction pays for its parent's fee. This can be
//lower fee transaction through the Replace-By-Fee (RBF) policy. If it // done by specifying an outpoint within the low fee transaction that is under
// the control of the wallet.
// //
//This RPC also serves useful when wanting to perform a Child-Pays-For-Parent // The fee preference can be expressed either as a specific fee rate or a delta
//(CPFP), where the child transaction pays for its parent's fee. This can be // of blocks in which the output should be swept on-chain within. If a fee
//done by specifying an outpoint within the low fee transaction that is under // preference is not explicitly specified, then an error is returned.
//the control of the wallet.
// //
//The fee preference can be expressed either as a specific fee rate or a delta // Note that this RPC currently doesn't perform any validation checks on the
//of blocks in which the output should be swept on-chain within. If a fee // fee preference being provided. For now, the responsibility of ensuring that
//preference is not explicitly specified, then an error is returned. // the new fee preference is sufficient is delegated to the user.
//
//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.
BumpFee(ctx context.Context, in *BumpFeeRequest, opts ...grpc.CallOption) (*BumpFeeResponse, error) BumpFee(ctx context.Context, in *BumpFeeRequest, opts ...grpc.CallOption) (*BumpFeeResponse, error)
// // ListSweeps returns a list of the sweep transactions our node has produced.
//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
//Note that these sweeps may not be confirmed yet, as we record sweeps on // broadcast, not confirmation.
//broadcast, not confirmation.
ListSweeps(ctx context.Context, in *ListSweepsRequest, opts ...grpc.CallOption) (*ListSweepsResponse, error) ListSweeps(ctx context.Context, in *ListSweepsRequest, opts ...grpc.CallOption) (*ListSweepsResponse, error)
// // LabelTransaction adds a label to a transaction. If the transaction already
//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
//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
//overwrite the exiting transaction label. Labels must not be empty, and // cannot exceed 500 characters.
//cannot exceed 500 characters.
LabelTransaction(ctx context.Context, in *LabelTransactionRequest, opts ...grpc.CallOption) (*LabelTransactionResponse, error) LabelTransaction(ctx context.Context, in *LabelTransactionRequest, opts ...grpc.CallOption) (*LabelTransactionResponse, error)
// FundPsbt creates a fully populated PSBT that contains enough inputs to fund
// the outputs specified in the template. There are two ways of specifying a
// template: Either by passing in a PSBT with at least one output declared or
// by passing in a raw TxTemplate message.
// //
//FundPsbt creates a fully populated PSBT that contains enough inputs to fund // If there are no inputs specified in the template, coin selection is
//the outputs specified in the template. There are two ways of specifying a // performed automatically. If the template does contain any inputs, it is
//template: Either by passing in a PSBT with at least one output declared or // assumed that full coin selection happened externally and no additional
//by passing in a raw TxTemplate message. // inputs are added. If the specified inputs aren't enough to fund the outputs
// with the given fee rate, an error is returned.
// //
//If there are no inputs specified in the template, coin selection is // After either selecting or verifying the inputs, all input UTXOs are locked
//performed automatically. If the template does contain any inputs, it is // with an internal app ID.
//assumed that full coin selection happened externally and no additional
//inputs are added. If the specified inputs aren't enough to fund the outputs
//with the given fee rate, an error is returned.
// //
//After either selecting or verifying the inputs, all input UTXOs are locked // NOTE: If this method returns without an error, it is the caller's
//with an internal app ID. // responsibility to either spend the locked UTXOs (by finalizing and then
// // publishing the transaction) or to unlock/release the locked UTXOs in case of
//NOTE: If this method returns without an error, it is the caller's // an error on the caller's side.
//responsibility to either spend the locked UTXOs (by finalizing and then
//publishing the transaction) or to unlock/release the locked UTXOs in case of
//an error on the caller's side.
FundPsbt(ctx context.Context, in *FundPsbtRequest, opts ...grpc.CallOption) (*FundPsbtResponse, error) FundPsbt(ctx context.Context, in *FundPsbtRequest, opts ...grpc.CallOption) (*FundPsbtResponse, error)
// SignPsbt expects a partial transaction with all inputs and outputs fully
// declared and tries to sign all unsigned inputs that have all required fields
// (UTXO information, BIP32 derivation information, witness or sig scripts)
// set.
// If no error is returned, the PSBT is ready to be given to the next signer or
// to be finalized if lnd was the last signer.
// //
//SignPsbt expects a partial transaction with all inputs and outputs fully // NOTE: This RPC only signs inputs (and only those it can sign), it does not
//declared and tries to sign all unsigned inputs that have all required fields // perform any other tasks (such as coin selection, UTXO locking or
//(UTXO information, BIP32 derivation information, witness or sig scripts) // input/output/fee value validation, PSBT finalization). Any input that is
//set. // incomplete will be skipped.
//If no error is returned, the PSBT is ready to be given to the next signer or
//to be finalized if lnd was the last signer.
//
//NOTE: This RPC only signs inputs (and only those it can sign), it does not
//perform any other tasks (such as coin selection, UTXO locking or
//input/output/fee value validation, PSBT finalization). Any input that is
//incomplete will be skipped.
SignPsbt(ctx context.Context, in *SignPsbtRequest, opts ...grpc.CallOption) (*SignPsbtResponse, error) SignPsbt(ctx context.Context, in *SignPsbtRequest, opts ...grpc.CallOption) (*SignPsbtResponse, error)
// FinalizePsbt expects a partial transaction with all inputs and outputs fully
// declared and tries to sign all inputs that belong to the wallet. Lnd must be
// the last signer of the transaction. That means, if there are any unsigned
// non-witness inputs or inputs without UTXO information attached or inputs
// without witness data that do not belong to lnd's wallet, this method will
// fail. If no error is returned, the PSBT is ready to be extracted and the
// final TX within to be broadcast.
// //
//FinalizePsbt expects a partial transaction with all inputs and outputs fully // NOTE: This method does NOT publish the transaction once finalized. It is the
//declared and tries to sign all inputs that belong to the wallet. Lnd must be // caller's responsibility to either publish the transaction on success or
//the last signer of the transaction. That means, if there are any unsigned // unlock/release any locked UTXOs in case of an error in this method.
//non-witness inputs or inputs without UTXO information attached or inputs
//without witness data that do not belong to lnd's wallet, this method will
//fail. If no error is returned, the PSBT is ready to be extracted and the
//final TX within to be broadcast.
//
//NOTE: This method does NOT publish the transaction once finalized. It is the
//caller's responsibility to either publish the transaction on success or
//unlock/release any locked UTXOs in case of an error in this method.
FinalizePsbt(ctx context.Context, in *FinalizePsbtRequest, opts ...grpc.CallOption) (*FinalizePsbtResponse, error) FinalizePsbt(ctx context.Context, in *FinalizePsbtRequest, opts ...grpc.CallOption) (*FinalizePsbtResponse, error)
} }
@@ -421,195 +399,173 @@ func (c *walletKitClient) FinalizePsbt(ctx context.Context, in *FinalizePsbtRequ
// All implementations must embed UnimplementedWalletKitServer // All implementations must embed UnimplementedWalletKitServer
// for forward compatibility // for forward compatibility
type WalletKitServer interface { type WalletKitServer interface {
// // ListUnspent returns a list of all utxos spendable by the wallet with a
//ListUnspent returns a list of all utxos spendable by the wallet with a // number of confirmations between the specified minimum and maximum. By
//number of confirmations between the specified minimum and maximum. By // default, all utxos are listed. To list only the unconfirmed utxos, set
//default, all utxos are listed. To list only the unconfirmed utxos, set // the unconfirmed_only to true.
//the unconfirmed_only to true.
ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error) ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error)
// // LeaseOutput locks an output to the given ID, preventing it from being
//LeaseOutput locks an output to the given ID, preventing it from being // available for any future coin selection attempts. The absolute time of the
//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
//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
//successive invocations of this RPC. Outputs can be unlocked before their // expiration through `ReleaseOutput`.
//expiration through `ReleaseOutput`.
LeaseOutput(context.Context, *LeaseOutputRequest) (*LeaseOutputResponse, error) LeaseOutput(context.Context, *LeaseOutputRequest) (*LeaseOutputResponse, error)
// // ReleaseOutput unlocks an output, allowing it to be available for coin
//ReleaseOutput unlocks an output, allowing it to be available for coin // selection if it remains unspent. The ID should match the one used to
//selection if it remains unspent. The ID should match the one used to // originally lock the output.
//originally lock the output.
ReleaseOutput(context.Context, *ReleaseOutputRequest) (*ReleaseOutputResponse, error) ReleaseOutput(context.Context, *ReleaseOutputRequest) (*ReleaseOutputResponse, error)
// // ListLeases lists all currently locked utxos.
//ListLeases lists all currently locked utxos.
ListLeases(context.Context, *ListLeasesRequest) (*ListLeasesResponse, error) ListLeases(context.Context, *ListLeasesRequest) (*ListLeasesResponse, error)
// // DeriveNextKey attempts to derive the *next* key within the key family
//DeriveNextKey attempts to derive the *next* key within the key family // (account in BIP43) specified. This method should return the next external
//(account in BIP43) specified. This method should return the next external // child within this branch.
//child within this branch.
DeriveNextKey(context.Context, *KeyReq) (*signrpc.KeyDescriptor, error) DeriveNextKey(context.Context, *KeyReq) (*signrpc.KeyDescriptor, error)
// // DeriveKey attempts to derive an arbitrary key specified by the passed
//DeriveKey attempts to derive an arbitrary key specified by the passed // KeyLocator.
//KeyLocator.
DeriveKey(context.Context, *signrpc.KeyLocator) (*signrpc.KeyDescriptor, error) DeriveKey(context.Context, *signrpc.KeyLocator) (*signrpc.KeyDescriptor, error)
// // NextAddr returns the next unused address within the wallet.
//NextAddr returns the next unused address within the wallet.
NextAddr(context.Context, *AddrRequest) (*AddrResponse, error) NextAddr(context.Context, *AddrRequest) (*AddrResponse, error)
// // ListAccounts retrieves all accounts belonging to the wallet by default. A
//ListAccounts retrieves all accounts belonging to the wallet by default. A // name and key scope filter can be provided to filter through all of the
//name and key scope filter can be provided to filter through all of the // wallet accounts and return only those matching.
//wallet accounts and return only those matching.
ListAccounts(context.Context, *ListAccountsRequest) (*ListAccountsResponse, error) ListAccounts(context.Context, *ListAccountsRequest) (*ListAccountsResponse, error)
// // RequiredReserve returns the minimum amount of satoshis that should be kept
//RequiredReserve returns the minimum amount of satoshis that should be kept // in the wallet in order to fee bump anchor channels if necessary. The value
//in the wallet in order to fee bump anchor channels if necessary. The value // scales with the number of public anchor channels but is capped at a maximum.
//scales with the number of public anchor channels but is capped at a maximum.
RequiredReserve(context.Context, *RequiredReserveRequest) (*RequiredReserveResponse, error) RequiredReserve(context.Context, *RequiredReserveRequest) (*RequiredReserveResponse, error)
// // ListAddresses retrieves all the addresses along with their balance. An
//ListAddresses retrieves all the addresses along with their balance. An // account name filter can be provided to filter through all of the
//account name filter can be provided to filter through all of the // wallet accounts and return the addresses of only those matching.
//wallet accounts and return the addresses of only those matching.
ListAddresses(context.Context, *ListAddressesRequest) (*ListAddressesResponse, error) ListAddresses(context.Context, *ListAddressesRequest) (*ListAddressesResponse, error)
// ImportAccount imports an account backed by an account extended public key.
// The master key fingerprint denotes the fingerprint of the root key
// corresponding to the account public key (also known as the key with
// derivation path m/). This may be required by some hardware wallets for
// proper identification and signing.
// //
//ImportAccount imports an account backed by an account extended public key. // The address type can usually be inferred from the key's version, but may be
//The master key fingerprint denotes the fingerprint of the root key // required for certain keys to map them into the proper scope.
//corresponding to the account public key (also known as the key with
//derivation path m/). This may be required by some hardware wallets for
//proper identification and signing.
// //
//The address type can usually be inferred from the key's version, but may be // For BIP-0044 keys, an address type must be specified as we intend to not
//required for certain keys to map them into the proper scope. // support importing BIP-0044 keys into the wallet using the legacy
// pay-to-pubkey-hash (P2PKH) scheme. A nested witness address type will force
// the standard BIP-0049 derivation scheme, while a witness address type will
// force the standard BIP-0084 derivation scheme.
// //
//For BIP-0044 keys, an address type must be specified as we intend to not // For BIP-0049 keys, an address type must also be specified to make a
//support importing BIP-0044 keys into the wallet using the legacy // distinction between the standard BIP-0049 address schema (nested witness
//pay-to-pubkey-hash (P2PKH) scheme. A nested witness address type will force // pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
//the standard BIP-0049 derivation scheme, while a witness address type will // externally, witness pubkeys internally).
//force the standard BIP-0084 derivation scheme.
// //
//For BIP-0049 keys, an address type must also be specified to make a // NOTE: Events (deposits/spends) for keys derived from an account will only be
//distinction between the standard BIP-0049 address schema (nested witness // detected by lnd if they happen after the import. Rescans to detect past
//pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys // events will be supported later on.
//externally, witness pubkeys internally).
//
//NOTE: Events (deposits/spends) for keys derived from an account will only be
//detected by lnd if they happen after the import. Rescans to detect past
//events will be supported later on.
ImportAccount(context.Context, *ImportAccountRequest) (*ImportAccountResponse, error) ImportAccount(context.Context, *ImportAccountRequest) (*ImportAccountResponse, error)
// ImportPublicKey imports a public key as watch-only into the wallet.
// //
//ImportPublicKey imports a public key as watch-only into the wallet. // NOTE: Events (deposits/spends) for a key will only be detected by lnd if
// // they happen after the import. Rescans to detect past events will be
//NOTE: Events (deposits/spends) for a key will only be detected by lnd if // supported later on.
//they happen after the import. Rescans to detect past events will be
//supported later on.
ImportPublicKey(context.Context, *ImportPublicKeyRequest) (*ImportPublicKeyResponse, error) ImportPublicKey(context.Context, *ImportPublicKeyRequest) (*ImportPublicKeyResponse, error)
// // PublishTransaction attempts to publish the passed transaction to the
//PublishTransaction attempts to publish the passed transaction to the // network. Once this returns without an error, the wallet will continually
//network. Once this returns without an error, the wallet will continually // attempt to re-broadcast the transaction on start up, until it enters the
//attempt to re-broadcast the transaction on start up, until it enters the // chain.
//chain.
PublishTransaction(context.Context, *Transaction) (*PublishResponse, error) PublishTransaction(context.Context, *Transaction) (*PublishResponse, error)
// // SendOutputs is similar to the existing sendmany call in Bitcoind, and
//SendOutputs is similar to the existing sendmany call in Bitcoind, and // allows the caller to create a transaction that sends to several outputs at
//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.
//once. This is ideal when wanting to batch create a set of transactions.
SendOutputs(context.Context, *SendOutputsRequest) (*SendOutputsResponse, error) SendOutputs(context.Context, *SendOutputsRequest) (*SendOutputsResponse, error)
// // EstimateFee attempts to query the internal fee estimator of the wallet to
//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
//determine the fee (in sat/kw) to attach to a transaction in order to // achieve the confirmation target.
//achieve the confirmation target.
EstimateFee(context.Context, *EstimateFeeRequest) (*EstimateFeeResponse, error) EstimateFee(context.Context, *EstimateFeeRequest) (*EstimateFeeResponse, error)
// 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.
// //
//PendingSweeps returns lists of on-chain outputs that lnd is currently // NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
//attempting to sweep within its central batching engine. Outputs with similar // remain supported. This is an advanced API that depends on the internals of
//fee rates are batched together in order to sweep them within a single // the UtxoSweeper, so things may change.
//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.
PendingSweeps(context.Context, *PendingSweepsRequest) (*PendingSweepsResponse, error) PendingSweeps(context.Context, *PendingSweepsRequest) (*PendingSweepsResponse, error)
// 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.
// //
//BumpFee bumps the fee of an arbitrary input within a transaction. This RPC // When bumping the fee of an input that currently exists within lnd's central
//takes a different approach than bitcoind's bumpfee command. lnd has a // batching engine, a higher fee transaction will be created that replaces the
//central batching engine in which inputs with similar fee rates are batched // lower fee transaction through the Replace-By-Fee (RBF) policy. If it
//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 // This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
//batching engine, a higher fee transaction will be created that replaces the // (CPFP), where the child transaction pays for its parent's fee. This can be
//lower fee transaction through the Replace-By-Fee (RBF) policy. If it // done by specifying an outpoint within the low fee transaction that is under
// the control of the wallet.
// //
//This RPC also serves useful when wanting to perform a Child-Pays-For-Parent // The fee preference can be expressed either as a specific fee rate or a delta
//(CPFP), where the child transaction pays for its parent's fee. This can be // of blocks in which the output should be swept on-chain within. If a fee
//done by specifying an outpoint within the low fee transaction that is under // preference is not explicitly specified, then an error is returned.
//the control of the wallet.
// //
//The fee preference can be expressed either as a specific fee rate or a delta // Note that this RPC currently doesn't perform any validation checks on the
//of blocks in which the output should be swept on-chain within. If a fee // fee preference being provided. For now, the responsibility of ensuring that
//preference is not explicitly specified, then an error is returned. // the new fee preference is sufficient is delegated to the user.
//
//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.
BumpFee(context.Context, *BumpFeeRequest) (*BumpFeeResponse, error) BumpFee(context.Context, *BumpFeeRequest) (*BumpFeeResponse, error)
// // ListSweeps returns a list of the sweep transactions our node has produced.
//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
//Note that these sweeps may not be confirmed yet, as we record sweeps on // broadcast, not confirmation.
//broadcast, not confirmation.
ListSweeps(context.Context, *ListSweepsRequest) (*ListSweepsResponse, error) ListSweeps(context.Context, *ListSweepsRequest) (*ListSweepsResponse, error)
// // LabelTransaction adds a label to a transaction. If the transaction already
//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
//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
//overwrite the exiting transaction label. Labels must not be empty, and // cannot exceed 500 characters.
//cannot exceed 500 characters.
LabelTransaction(context.Context, *LabelTransactionRequest) (*LabelTransactionResponse, error) LabelTransaction(context.Context, *LabelTransactionRequest) (*LabelTransactionResponse, error)
// FundPsbt creates a fully populated PSBT that contains enough inputs to fund
// the outputs specified in the template. There are two ways of specifying a
// template: Either by passing in a PSBT with at least one output declared or
// by passing in a raw TxTemplate message.
// //
//FundPsbt creates a fully populated PSBT that contains enough inputs to fund // If there are no inputs specified in the template, coin selection is
//the outputs specified in the template. There are two ways of specifying a // performed automatically. If the template does contain any inputs, it is
//template: Either by passing in a PSBT with at least one output declared or // assumed that full coin selection happened externally and no additional
//by passing in a raw TxTemplate message. // inputs are added. If the specified inputs aren't enough to fund the outputs
// with the given fee rate, an error is returned.
// //
//If there are no inputs specified in the template, coin selection is // After either selecting or verifying the inputs, all input UTXOs are locked
//performed automatically. If the template does contain any inputs, it is // with an internal app ID.
//assumed that full coin selection happened externally and no additional
//inputs are added. If the specified inputs aren't enough to fund the outputs
//with the given fee rate, an error is returned.
// //
//After either selecting or verifying the inputs, all input UTXOs are locked // NOTE: If this method returns without an error, it is the caller's
//with an internal app ID. // responsibility to either spend the locked UTXOs (by finalizing and then
// // publishing the transaction) or to unlock/release the locked UTXOs in case of
//NOTE: If this method returns without an error, it is the caller's // an error on the caller's side.
//responsibility to either spend the locked UTXOs (by finalizing and then
//publishing the transaction) or to unlock/release the locked UTXOs in case of
//an error on the caller's side.
FundPsbt(context.Context, *FundPsbtRequest) (*FundPsbtResponse, error) FundPsbt(context.Context, *FundPsbtRequest) (*FundPsbtResponse, error)
// SignPsbt expects a partial transaction with all inputs and outputs fully
// declared and tries to sign all unsigned inputs that have all required fields
// (UTXO information, BIP32 derivation information, witness or sig scripts)
// set.
// If no error is returned, the PSBT is ready to be given to the next signer or
// to be finalized if lnd was the last signer.
// //
//SignPsbt expects a partial transaction with all inputs and outputs fully // NOTE: This RPC only signs inputs (and only those it can sign), it does not
//declared and tries to sign all unsigned inputs that have all required fields // perform any other tasks (such as coin selection, UTXO locking or
//(UTXO information, BIP32 derivation information, witness or sig scripts) // input/output/fee value validation, PSBT finalization). Any input that is
//set. // incomplete will be skipped.
//If no error is returned, the PSBT is ready to be given to the next signer or
//to be finalized if lnd was the last signer.
//
//NOTE: This RPC only signs inputs (and only those it can sign), it does not
//perform any other tasks (such as coin selection, UTXO locking or
//input/output/fee value validation, PSBT finalization). Any input that is
//incomplete will be skipped.
SignPsbt(context.Context, *SignPsbtRequest) (*SignPsbtResponse, error) SignPsbt(context.Context, *SignPsbtRequest) (*SignPsbtResponse, error)
// FinalizePsbt expects a partial transaction with all inputs and outputs fully
// declared and tries to sign all inputs that belong to the wallet. Lnd must be
// the last signer of the transaction. That means, if there are any unsigned
// non-witness inputs or inputs without UTXO information attached or inputs
// without witness data that do not belong to lnd's wallet, this method will
// fail. If no error is returned, the PSBT is ready to be extracted and the
// final TX within to be broadcast.
// //
//FinalizePsbt expects a partial transaction with all inputs and outputs fully // NOTE: This method does NOT publish the transaction once finalized. It is the
//declared and tries to sign all inputs that belong to the wallet. Lnd must be // caller's responsibility to either publish the transaction on success or
//the last signer of the transaction. That means, if there are any unsigned // unlock/release any locked UTXOs in case of an error in this method.
//non-witness inputs or inputs without UTXO information attached or inputs
//without witness data that do not belong to lnd's wallet, this method will
//fail. If no error is returned, the PSBT is ready to be extracted and the
//final TX within to be broadcast.
//
//NOTE: This method does NOT publish the transaction once finalized. It is the
//caller's responsibility to either publish the transaction on success or
//unlock/release any locked UTXOs in case of an error in this method.
FinalizePsbt(context.Context, *FinalizePsbtRequest) (*FinalizePsbtResponse, error) FinalizePsbt(context.Context, *FinalizePsbtRequest) (*FinalizePsbtResponse, error)
mustEmbedUnimplementedWalletKitServer() mustEmbedUnimplementedWalletKitServer()
} }
+128 -159
View File
@@ -25,15 +25,13 @@ type GenSeedRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // aezeed_passphrase is an optional user provided passphrase that will be used
//aezeed_passphrase is an optional user provided passphrase that will be used // to encrypt the generated aezeed cipher seed. When using REST, this field
//to encrypt the generated aezeed cipher seed. When using REST, this field // must be encoded as base64.
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,1,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"` AezeedPassphrase []byte `protobuf:"bytes,1,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
// // seed_entropy is an optional 16-bytes generated via CSPRNG. If not
//seed_entropy is an optional 16-bytes generated via CSPRNG. If not // specified, then a fresh set of randomness will be used to create the seed.
//specified, then a fresh set of randomness will be used to create the seed. // When using REST, this field must be encoded as base64.
//When using REST, this field must be encoded as base64.
SeedEntropy []byte `protobuf:"bytes,2,opt,name=seed_entropy,json=seedEntropy,proto3" json:"seed_entropy,omitempty"` SeedEntropy []byte `protobuf:"bytes,2,opt,name=seed_entropy,json=seedEntropy,proto3" json:"seed_entropy,omitempty"`
} }
@@ -88,16 +86,14 @@ type GenSeedResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed // cipher seed obtained by the user. This field is optional, as if not
//cipher seed obtained by the user. This field is optional, as if not // provided, then the daemon will generate a new cipher seed for the user.
//provided, then the daemon will generate a new cipher seed for the user. // Otherwise, then the daemon will attempt to recover the wallet state linked
//Otherwise, then the daemon will attempt to recover the wallet state linked // to this cipher seed.
//to this cipher seed.
CipherSeedMnemonic []string `protobuf:"bytes,1,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"` CipherSeedMnemonic []string `protobuf:"bytes,1,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
// // enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
//enciphered_seed are the raw aezeed cipher seed bytes. This is the raw // cipher text before run through our mnemonic encoding scheme.
//cipher text before run through our mnemonic encoding scheme.
EncipheredSeed []byte `protobuf:"bytes,2,opt,name=enciphered_seed,json=encipheredSeed,proto3" json:"enciphered_seed,omitempty"` EncipheredSeed []byte `protobuf:"bytes,2,opt,name=enciphered_seed,json=encipheredSeed,proto3" json:"enciphered_seed,omitempty"`
} }
@@ -152,77 +148,67 @@ type InitWalletRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // wallet_password is the passphrase that should be used to encrypt the
//wallet_password is the passphrase that should be used to encrypt the // wallet. This MUST be at least 8 chars in length. After creation, this
//wallet. This MUST be at least 8 chars in length. After creation, this // password is required to unlock the daemon. When using REST, this field
//password is required to unlock the daemon. When using REST, this field // must be encoded as base64.
//must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"` WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
// // cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed // cipher seed obtained by the user. This may have been generated by the
//cipher seed obtained by the user. This may have been generated by the // GenSeed method, or be an existing seed.
//GenSeed method, or be an existing seed.
CipherSeedMnemonic []string `protobuf:"bytes,2,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"` CipherSeedMnemonic []string `protobuf:"bytes,2,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
// // aezeed_passphrase is an optional user provided passphrase that will be used
//aezeed_passphrase is an optional user provided passphrase that will be used // to encrypt the generated aezeed cipher seed. When using REST, this field
//to encrypt the generated aezeed cipher seed. When using REST, this field // must be encoded as base64.
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,3,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"` AezeedPassphrase []byte `protobuf:"bytes,3,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
// // recovery_window is an optional argument specifying the address lookahead
//recovery_window is an optional argument specifying the address lookahead // when restoring a wallet seed. The recovery window applies to each
//when restoring a wallet seed. The recovery window applies to each // individual branch of the BIP44 derivation paths. Supplying a recovery
//individual branch of the BIP44 derivation paths. Supplying a recovery // window of zero indicates that no addresses should be recovered, such after
//window of zero indicates that no addresses should be recovered, such after // the first initialization of the wallet.
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,4,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"` RecoveryWindow int32 `protobuf:"varint,4,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
// // channel_backups is an optional argument that allows clients to recover the
//channel_backups is an optional argument that allows clients to recover the // settled funds within a set of channels. This should be populated if the
//settled funds within a set of channels. This should be populated if the // user was unable to close out all channels and sweep funds before partial or
//user was unable to close out all channels and sweep funds before partial or // total data loss occurred. If specified, then after on-chain recovery of
//total data loss occurred. If specified, then after on-chain recovery of // funds, lnd begin to carry out the data loss recovery protocol in order to
//funds, lnd begin to carry out the data loss recovery protocol in order to // recover the funds in each channel from a remote force closed transaction.
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,5,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"` ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,5,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
// // stateless_init is an optional argument instructing the daemon NOT to create
//stateless_init is an optional argument instructing the daemon NOT to create // any *.macaroon files in its filesystem. If this parameter is set, then the
//any *.macaroon files in its filesystem. If this parameter is set, then the // admin macaroon returned in the response MUST be stored by the caller of the
//admin macaroon returned in the response MUST be stored by the caller of the // RPC as otherwise all access to the daemon will be lost!
//RPC as otherwise all access to the daemon will be lost!
StatelessInit bool `protobuf:"varint,6,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"` StatelessInit bool `protobuf:"varint,6,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"`
// // extended_master_key is an alternative to specifying cipher_seed_mnemonic and
//extended_master_key is an alternative to specifying cipher_seed_mnemonic and // aezeed_passphrase. Instead of deriving the master root key from the entropy
//aezeed_passphrase. Instead of deriving the master root key from the entropy // of an aezeed cipher seed, the given extended master root key is used
//of an aezeed cipher seed, the given extended master root key is used // directly as the wallet's master key. This allows users to import/use a
//directly as the wallet's master key. This allows users to import/use a // master key from another wallet. When doing so, lnd still uses its default
//master key from another wallet. When doing so, lnd still uses its default // SegWit only (BIP49/84) derivation paths and funds from custom/non-default
//SegWit only (BIP49/84) derivation paths and funds from custom/non-default // derivation paths will not automatically appear in the on-chain wallet. Using
//derivation paths will not automatically appear in the on-chain wallet. Using // an 'xprv' instead of an aezeed also has the disadvantage that the wallet's
//an 'xprv' instead of an aezeed also has the disadvantage that the wallet's // birthday is not known as that is an information that's only encoded in the
//birthday is not known as that is an information that's only encoded in the // aezeed, not the xprv. Therefore a birthday needs to be specified in
//aezeed, not the xprv. Therefore a birthday needs to be specified in // extended_master_key_birthday_timestamp or a "safe" default value will be
//extended_master_key_birthday_timestamp or a "safe" default value will be // used.
//used.
ExtendedMasterKey string `protobuf:"bytes,7,opt,name=extended_master_key,json=extendedMasterKey,proto3" json:"extended_master_key,omitempty"` ExtendedMasterKey string `protobuf:"bytes,7,opt,name=extended_master_key,json=extendedMasterKey,proto3" json:"extended_master_key,omitempty"`
// // extended_master_key_birthday_timestamp is the optional unix timestamp in
//extended_master_key_birthday_timestamp is the optional unix timestamp in // seconds to use as the wallet's birthday when using an extended master key
//seconds to use as the wallet's birthday when using an extended master key // to restore the wallet. lnd will only start scanning for funds in blocks that
//to restore the wallet. lnd will only start scanning for funds in blocks that // are after the birthday which can speed up the process significantly. If the
//are after the birthday which can speed up the process significantly. If the // birthday is not known, this should be left at its default value of 0 in
//birthday is not known, this should be left at its default value of 0 in // which case lnd will start scanning from the first SegWit block (481824 on
//which case lnd will start scanning from the first SegWit block (481824 on // mainnet).
//mainnet).
ExtendedMasterKeyBirthdayTimestamp uint64 `protobuf:"varint,8,opt,name=extended_master_key_birthday_timestamp,json=extendedMasterKeyBirthdayTimestamp,proto3" json:"extended_master_key_birthday_timestamp,omitempty"` ExtendedMasterKeyBirthdayTimestamp uint64 `protobuf:"varint,8,opt,name=extended_master_key_birthday_timestamp,json=extendedMasterKeyBirthdayTimestamp,proto3" json:"extended_master_key_birthday_timestamp,omitempty"`
// // watch_only is the third option of initializing a wallet: by importing
//watch_only is the third option of initializing a wallet: by importing // account xpubs only and therefore creating a watch-only wallet that does not
//account xpubs only and therefore creating a watch-only wallet that does not // contain any private keys. That means the wallet won't be able to sign for
//contain any private keys. That means the wallet won't be able to sign for // any of the keys and _needs_ to be run with a remote signer that has the
//any of the keys and _needs_ to be run with a remote signer that has the // corresponding private keys and can serve signing RPC requests.
//corresponding private keys and can serve signing RPC requests.
WatchOnly *WatchOnly `protobuf:"bytes,9,opt,name=watch_only,json=watchOnly,proto3" json:"watch_only,omitempty"` WatchOnly *WatchOnly `protobuf:"bytes,9,opt,name=watch_only,json=watchOnly,proto3" json:"watch_only,omitempty"`
// // macaroon_root_key is an optional 32 byte macaroon root key that can be
//macaroon_root_key is an optional 32 byte macaroon root key that can be // provided when initializing the wallet rather than letting lnd generate one
//provided when initializing the wallet rather than letting lnd generate one // on its own.
//on its own.
MacaroonRootKey []byte `protobuf:"bytes,10,opt,name=macaroon_root_key,json=macaroonRootKey,proto3" json:"macaroon_root_key,omitempty"` MacaroonRootKey []byte `protobuf:"bytes,10,opt,name=macaroon_root_key,json=macaroonRootKey,proto3" json:"macaroon_root_key,omitempty"`
} }
@@ -333,12 +319,11 @@ type InitWalletResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The binary serialized admin macaroon that can be used to access the daemon
//The binary serialized admin macaroon that can be used to access the daemon // after creating the wallet. If the stateless_init parameter was set to true,
//after creating the wallet. If the stateless_init parameter was set to true, // this is the ONLY copy of the macaroon and MUST be stored safely by the
//this is the ONLY copy of the macaroon and MUST be stored safely by the // caller. Otherwise a copy of this macaroon is also persisted on disk by the
//caller. Otherwise a copy of this macaroon is also persisted on disk by the // daemon, together with other macaroon files.
//daemon, together with other macaroon files.
AdminMacaroon []byte `protobuf:"bytes,1,opt,name=admin_macaroon,json=adminMacaroon,proto3" json:"admin_macaroon,omitempty"` AdminMacaroon []byte `protobuf:"bytes,1,opt,name=admin_macaroon,json=adminMacaroon,proto3" json:"admin_macaroon,omitempty"`
} }
@@ -386,25 +371,22 @@ type WatchOnly struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The unix timestamp in seconds of when the master key was created. lnd will
//The unix timestamp in seconds of when the master key was created. lnd will // only start scanning for funds in blocks that are after the birthday which
//only start scanning for funds in blocks that are after the birthday which // can speed up the process significantly. If the birthday is not known, this
//can speed up the process significantly. If the birthday is not known, this // should be left at its default value of 0 in which case lnd will start
//should be left at its default value of 0 in which case lnd will start // scanning from the first SegWit block (481824 on mainnet).
//scanning from the first SegWit block (481824 on mainnet).
MasterKeyBirthdayTimestamp uint64 `protobuf:"varint,1,opt,name=master_key_birthday_timestamp,json=masterKeyBirthdayTimestamp,proto3" json:"master_key_birthday_timestamp,omitempty"` MasterKeyBirthdayTimestamp uint64 `protobuf:"varint,1,opt,name=master_key_birthday_timestamp,json=masterKeyBirthdayTimestamp,proto3" json:"master_key_birthday_timestamp,omitempty"`
// // The fingerprint of the root key (also known as the key with derivation path
//The fingerprint of the root key (also known as the key with derivation path // m/) from which the account public keys were derived from. This may be
//m/) from which the account public keys were derived from. This may be // required by some hardware wallets for proper identification and signing. The
//required by some hardware wallets for proper identification and signing. The // bytes must be in big-endian order.
//bytes must be in big-endian order.
MasterKeyFingerprint []byte `protobuf:"bytes,2,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"` MasterKeyFingerprint []byte `protobuf:"bytes,2,opt,name=master_key_fingerprint,json=masterKeyFingerprint,proto3" json:"master_key_fingerprint,omitempty"`
// // The list of accounts to import. There _must_ be an account for all of lnd's
//The list of accounts to import. There _must_ be an account for all of lnd's // main key scopes: BIP49/BIP84 (m/49'/0'/0', m/84'/0'/0', note that the
//main key scopes: BIP49/BIP84 (m/49'/0'/0', m/84'/0'/0', note that the // coin type is always 0, even for testnet/regtest) and lnd's internal key
//coin type is always 0, even for testnet/regtest) and lnd's internal key // scope (m/1017'/<coin_type>'/<account>'), where account is the key family as
//scope (m/1017'/<coin_type>'/<account>'), where account is the key family as // defined in `keychain/derivation.go` (currently indices 0 to 9).
//defined in `keychain/derivation.go` (currently indices 0 to 9).
Accounts []*WatchOnlyAccount `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"` Accounts []*WatchOnlyAccount `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"`
} }
@@ -466,24 +448,20 @@ type WatchOnlyAccount struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // Purpose is the first number in the derivation path, must be either 49, 84
//Purpose is the first number in the derivation path, must be either 49, 84 // or 1017.
//or 1017.
Purpose uint32 `protobuf:"varint,1,opt,name=purpose,proto3" json:"purpose,omitempty"` Purpose uint32 `protobuf:"varint,1,opt,name=purpose,proto3" json:"purpose,omitempty"`
// // Coin type is the second number in the derivation path, this is _always_ 0
//Coin type is the second number in the derivation path, this is _always_ 0 // for purposes 49 and 84. It only needs to be set to 1 for purpose 1017 on
//for purposes 49 and 84. It only needs to be set to 1 for purpose 1017 on // testnet or regtest.
//testnet or regtest.
CoinType uint32 `protobuf:"varint,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` CoinType uint32 `protobuf:"varint,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"`
// // Account is the third number in the derivation path. For purposes 49 and 84
//Account is the third number in the derivation path. For purposes 49 and 84 // at least the default account (index 0) needs to be created but optional
//at least the default account (index 0) needs to be created but optional // additional accounts are allowed. For purpose 1017 there needs to be exactly
//additional accounts are allowed. For purpose 1017 there needs to be exactly // one account for each of the key families defined in `keychain/derivation.go`
//one account for each of the key families defined in `keychain/derivation.go` // (currently indices 0 to 9)
//(currently indices 0 to 9)
Account uint32 `protobuf:"varint,3,opt,name=account,proto3" json:"account,omitempty"` Account uint32 `protobuf:"varint,3,opt,name=account,proto3" json:"account,omitempty"`
// // The extended public key at depth 3 for the given account.
//The extended public key at depth 3 for the given account.
Xpub string `protobuf:"bytes,4,opt,name=xpub,proto3" json:"xpub,omitempty"` Xpub string `protobuf:"bytes,4,opt,name=xpub,proto3" json:"xpub,omitempty"`
} }
@@ -552,29 +530,25 @@ type UnlockWalletRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // wallet_password should be the current valid passphrase for the daemon. This
//wallet_password should be the current valid passphrase for the daemon. This // will be required to decrypt on-disk material that the daemon requires to
//will be required to decrypt on-disk material that the daemon requires to // function properly. When using REST, this field must be encoded as base64.
//function properly. When using REST, this field must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"` WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
// // recovery_window is an optional argument specifying the address lookahead
//recovery_window is an optional argument specifying the address lookahead // when restoring a wallet seed. The recovery window applies to each
//when restoring a wallet seed. The recovery window applies to each // individual branch of the BIP44 derivation paths. Supplying a recovery
//individual branch of the BIP44 derivation paths. Supplying a recovery // window of zero indicates that no addresses should be recovered, such after
//window of zero indicates that no addresses should be recovered, such after // the first initialization of the wallet.
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,2,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"` RecoveryWindow int32 `protobuf:"varint,2,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
// // channel_backups is an optional argument that allows clients to recover the
//channel_backups is an optional argument that allows clients to recover the // settled funds within a set of channels. This should be populated if the
//settled funds within a set of channels. This should be populated if the // user was unable to close out all channels and sweep funds before partial or
//user was unable to close out all channels and sweep funds before partial or // total data loss occurred. If specified, then after on-chain recovery of
//total data loss occurred. If specified, then after on-chain recovery of // funds, lnd begin to carry out the data loss recovery protocol in order to
//funds, lnd begin to carry out the data loss recovery protocol in order to // recover the funds in each channel from a remote force closed transaction.
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,3,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"` ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,3,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
// // stateless_init is an optional argument instructing the daemon NOT to create
//stateless_init is an optional argument instructing the daemon NOT to create // any *.macaroon files in its file system.
//any *.macaroon files in its file system.
StatelessInit bool `protobuf:"varint,4,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"` StatelessInit bool `protobuf:"varint,4,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"`
} }
@@ -681,24 +655,20 @@ type ChangePasswordRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // current_password should be the current valid passphrase used to unlock the
//current_password should be the current valid passphrase used to unlock the // daemon. When using REST, this field must be encoded as base64.
//daemon. When using REST, this field must be encoded as base64.
CurrentPassword []byte `protobuf:"bytes,1,opt,name=current_password,json=currentPassword,proto3" json:"current_password,omitempty"` CurrentPassword []byte `protobuf:"bytes,1,opt,name=current_password,json=currentPassword,proto3" json:"current_password,omitempty"`
// // new_password should be the new passphrase that will be needed to unlock the
//new_password should be the new passphrase that will be needed to unlock the // daemon. When using REST, this field must be encoded as base64.
//daemon. When using REST, this field must be encoded as base64.
NewPassword []byte `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"` NewPassword []byte `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"`
// // stateless_init is an optional argument instructing the daemon NOT to create
//stateless_init is an optional argument instructing the daemon NOT to create // any *.macaroon files in its filesystem. If this parameter is set, then the
//any *.macaroon files in its filesystem. If this parameter is set, then the // admin macaroon returned in the response MUST be stored by the caller of the
//admin macaroon returned in the response MUST be stored by the caller of the // RPC as otherwise all access to the daemon will be lost!
//RPC as otherwise all access to the daemon will be lost!
StatelessInit bool `protobuf:"varint,3,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"` StatelessInit bool `protobuf:"varint,3,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"`
// // new_macaroon_root_key is an optional argument instructing the daemon to
//new_macaroon_root_key is an optional argument instructing the daemon to // rotate the macaroon root key when set to true. This will invalidate all
//rotate the macaroon root key when set to true. This will invalidate all // previously generated macaroons.
//previously generated macaroons.
NewMacaroonRootKey bool `protobuf:"varint,4,opt,name=new_macaroon_root_key,json=newMacaroonRootKey,proto3" json:"new_macaroon_root_key,omitempty"` NewMacaroonRootKey bool `protobuf:"varint,4,opt,name=new_macaroon_root_key,json=newMacaroonRootKey,proto3" json:"new_macaroon_root_key,omitempty"`
} }
@@ -767,13 +737,12 @@ type ChangePasswordResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The binary serialized admin macaroon that can be used to access the daemon
//The binary serialized admin macaroon that can be used to access the daemon // after rotating the macaroon root key. If both the stateless_init and
//after rotating the macaroon root key. If both the stateless_init and // new_macaroon_root_key parameter were set to true, this is the ONLY copy of
//new_macaroon_root_key parameter were set to true, this is the ONLY copy of // the macaroon that was created from the new root key and MUST be stored
//the macaroon that was created from the new root key and MUST be stored // safely by the caller. Otherwise a copy of this macaroon is also persisted on
//safely by the caller. Otherwise a copy of this macaroon is also persisted on // disk by the daemon, together with other macaroon files.
//disk by the daemon, together with other macaroon files.
AdminMacaroon []byte `protobuf:"bytes,1,opt,name=admin_macaroon,json=adminMacaroon,proto3" json:"admin_macaroon,omitempty"` AdminMacaroon []byte `protobuf:"bytes,1,opt,name=admin_macaroon,json=adminMacaroon,proto3" json:"admin_macaroon,omitempty"`
} }
+42 -46
View File
@@ -18,37 +18,35 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WalletUnlockerClient interface { type WalletUnlockerClient interface {
// 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.
// //
//GenSeed is the first method that should be used to instantiate a new lnd // Once the cipherseed is obtained and verified by the user, the InitWallet
//instance. This method allows a caller to generate a new aezeed cipher seed // method should be used to commit the newly generated seed, and create the
//given an optional passphrase. If provided, the passphrase will be necessary // wallet.
//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.
GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error) GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error)
// 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.
// //
//InitWallet is used when lnd is starting up for the first time to fully // In the case of a recovery scenario, the user can also specify their aezeed
//initialize the daemon and its internal wallet. At the very least a wallet // mnemonic and passphrase. If set, then the daemon will use this prior state
//password must be provided. This will be used to encrypt sensitive material // to initialize its internal wallet.
//on disk.
// //
//In the case of a recovery scenario, the user can also specify their aezeed // Alternatively, this can be used along with the GenSeed RPC to obtain a
//mnemonic and passphrase. If set, then the daemon will use this prior state // seed, then present it to the user. Once it has been verified by the user,
//to initialize its internal wallet. // the seed can be fed into this RPC in order to commit the new 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.
InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error) InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error)
// lncli: `unlock` // lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock // UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database. // the wallet database.
UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error) UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error)
// lncli: `changepassword` // lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will // ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful. // automatically unlock the wallet database if successful.
ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error) ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error)
} }
@@ -100,37 +98,35 @@ func (c *walletUnlockerClient) ChangePassword(ctx context.Context, in *ChangePas
// All implementations must embed UnimplementedWalletUnlockerServer // All implementations must embed UnimplementedWalletUnlockerServer
// for forward compatibility // for forward compatibility
type WalletUnlockerServer interface { type WalletUnlockerServer interface {
// 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.
// //
//GenSeed is the first method that should be used to instantiate a new lnd // Once the cipherseed is obtained and verified by the user, the InitWallet
//instance. This method allows a caller to generate a new aezeed cipher seed // method should be used to commit the newly generated seed, and create the
//given an optional passphrase. If provided, the passphrase will be necessary // wallet.
//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.
GenSeed(context.Context, *GenSeedRequest) (*GenSeedResponse, error) GenSeed(context.Context, *GenSeedRequest) (*GenSeedResponse, error)
// 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.
// //
//InitWallet is used when lnd is starting up for the first time to fully // In the case of a recovery scenario, the user can also specify their aezeed
//initialize the daemon and its internal wallet. At the very least a wallet // mnemonic and passphrase. If set, then the daemon will use this prior state
//password must be provided. This will be used to encrypt sensitive material // to initialize its internal wallet.
//on disk.
// //
//In the case of a recovery scenario, the user can also specify their aezeed // Alternatively, this can be used along with the GenSeed RPC to obtain a
//mnemonic and passphrase. If set, then the daemon will use this prior state // seed, then present it to the user. Once it has been verified by the user,
//to initialize its internal wallet. // the seed can be fed into this RPC in order to commit the new 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.
InitWallet(context.Context, *InitWalletRequest) (*InitWalletResponse, error) InitWallet(context.Context, *InitWalletRequest) (*InitWalletResponse, error)
// lncli: `unlock` // lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock // UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database. // the wallet database.
UnlockWallet(context.Context, *UnlockWalletRequest) (*UnlockWalletResponse, error) UnlockWallet(context.Context, *UnlockWalletRequest) (*UnlockWalletResponse, error)
// lncli: `changepassword` // lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will // ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful. // automatically unlock the wallet database if successful.
ChangePassword(context.Context, *ChangePasswordRequest) (*ChangePasswordResponse, error) ChangePassword(context.Context, *ChangePasswordRequest) (*ChangePasswordResponse, error)
mustEmbedUnimplementedWalletUnlockerServer() mustEmbedUnimplementedWalletUnlockerServer()
} }
+6 -6
View File
@@ -19,9 +19,9 @@ const _ = grpc.SupportPackageIsVersion7
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WatchtowerClient interface { type WatchtowerClient interface {
// lncli: tower info // lncli: tower info
//GetInfo returns general information concerning the companion watchtower // GetInfo returns general information concerning the companion watchtower
//including its public key and URIs where the server is currently // including its public key and URIs where the server is currently
//listening for clients. // listening for clients.
GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error) GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error)
} }
@@ -47,9 +47,9 @@ func (c *watchtowerClient) GetInfo(ctx context.Context, in *GetInfoRequest, opts
// for forward compatibility // for forward compatibility
type WatchtowerServer interface { type WatchtowerServer interface {
// lncli: tower info // lncli: tower info
//GetInfo returns general information concerning the companion watchtower // GetInfo returns general information concerning the companion watchtower
//including its public key and URIs where the server is currently // including its public key and URIs where the server is currently
//listening for clients. // listening for clients.
GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error) GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error)
mustEmbedUnimplementedWatchtowerServer() mustEmbedUnimplementedWatchtowerServer()
} }
+26 -38
View File
@@ -170,10 +170,9 @@ type RemoveTowerRequest struct {
// The identifying public key of the watchtower to remove. // The identifying public key of the watchtower to remove.
Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
// // If set, then the record for this address will be removed, indicating that is
//If set, then the record for this address will be removed, indicating that is // is stale. Otherwise, the watchtower will no longer be used for future
//is stale. Otherwise, the watchtower will no longer be used for future // session negotiations and backups.
//session negotiations and backups.
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
} }
@@ -323,26 +322,22 @@ type TowerSession struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The total number of successful backups that have been made to the
//The total number of successful backups that have been made to the // watchtower session.
//watchtower session.
NumBackups uint32 `protobuf:"varint,1,opt,name=num_backups,json=numBackups,proto3" json:"num_backups,omitempty"` NumBackups uint32 `protobuf:"varint,1,opt,name=num_backups,json=numBackups,proto3" json:"num_backups,omitempty"`
// // The total number of backups in the session that are currently pending to be
//The total number of backups in the session that are currently pending to be // acknowledged by the watchtower.
//acknowledged by the watchtower.
NumPendingBackups uint32 `protobuf:"varint,2,opt,name=num_pending_backups,json=numPendingBackups,proto3" json:"num_pending_backups,omitempty"` NumPendingBackups uint32 `protobuf:"varint,2,opt,name=num_pending_backups,json=numPendingBackups,proto3" json:"num_pending_backups,omitempty"`
// The maximum number of backups allowed by the watchtower session. // The maximum number of backups allowed by the watchtower session.
MaxBackups uint32 `protobuf:"varint,3,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"` MaxBackups uint32 `protobuf:"varint,3,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"`
// // Deprecated, use sweep_sat_per_vbyte.
//Deprecated, use sweep_sat_per_vbyte. // The fee rate, in satoshis per vbyte, that will be used by the watchtower for
//The fee rate, in satoshis per vbyte, that will be used by the watchtower for // the justice transaction in the event of a channel breach.
//the justice transaction in the event of a channel breach.
// //
// Deprecated: Do not use. // Deprecated: Do not use.
SweepSatPerByte uint32 `protobuf:"varint,4,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` SweepSatPerByte uint32 `protobuf:"varint,4,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"`
// // The fee rate, in satoshis per vbyte, that will be used by the watchtower for
//The fee rate, in satoshis per vbyte, that will be used by the watchtower for // the justice transaction in the event of a channel breach.
//the justice transaction in the event of a channel breach.
SweepSatPerVbyte uint32 `protobuf:"varint,5,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"` SweepSatPerVbyte uint32 `protobuf:"varint,5,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"`
} }
@@ -637,17 +632,14 @@ type StatsResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The total number of backups made to all active and exhausted watchtower
//The total number of backups made to all active and exhausted watchtower // sessions.
//sessions.
NumBackups uint32 `protobuf:"varint,1,opt,name=num_backups,json=numBackups,proto3" json:"num_backups,omitempty"` NumBackups uint32 `protobuf:"varint,1,opt,name=num_backups,json=numBackups,proto3" json:"num_backups,omitempty"`
// // The total number of backups that are pending to be acknowledged by all
//The total number of backups that are pending to be acknowledged by all // active and exhausted watchtower sessions.
//active and exhausted watchtower sessions.
NumPendingBackups uint32 `protobuf:"varint,2,opt,name=num_pending_backups,json=numPendingBackups,proto3" json:"num_pending_backups,omitempty"` NumPendingBackups uint32 `protobuf:"varint,2,opt,name=num_pending_backups,json=numPendingBackups,proto3" json:"num_pending_backups,omitempty"`
// // The total number of backups that all active and exhausted watchtower
//The total number of backups that all active and exhausted watchtower // sessions have failed to acknowledge.
//sessions have failed to acknowledge.
NumFailedBackups uint32 `protobuf:"varint,3,opt,name=num_failed_backups,json=numFailedBackups,proto3" json:"num_failed_backups,omitempty"` NumFailedBackups uint32 `protobuf:"varint,3,opt,name=num_failed_backups,json=numFailedBackups,proto3" json:"num_failed_backups,omitempty"`
// The total number of new sessions made to watchtowers. // The total number of new sessions made to watchtowers.
NumSessionsAcquired uint32 `protobuf:"varint,4,opt,name=num_sessions_acquired,json=numSessionsAcquired,proto3" json:"num_sessions_acquired,omitempty"` NumSessionsAcquired uint32 `protobuf:"varint,4,opt,name=num_sessions_acquired,json=numSessionsAcquired,proto3" json:"num_sessions_acquired,omitempty"`
@@ -727,8 +719,7 @@ type PolicyRequest struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The client type from which to retrieve the active offering policy.
//The client type from which to retrieve the active offering policy.
PolicyType PolicyType `protobuf:"varint,1,opt,name=policy_type,json=policyType,proto3,enum=wtclientrpc.PolicyType" json:"policy_type,omitempty"` PolicyType PolicyType `protobuf:"varint,1,opt,name=policy_type,json=policyType,proto3,enum=wtclientrpc.PolicyType" json:"policy_type,omitempty"`
} }
@@ -776,20 +767,17 @@ type PolicyResponse struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
// // The maximum number of updates each session we negotiate with watchtowers
//The maximum number of updates each session we negotiate with watchtowers // should allow.
//should allow.
MaxUpdates uint32 `protobuf:"varint,1,opt,name=max_updates,json=maxUpdates,proto3" json:"max_updates,omitempty"` MaxUpdates uint32 `protobuf:"varint,1,opt,name=max_updates,json=maxUpdates,proto3" json:"max_updates,omitempty"`
// // Deprecated, use sweep_sat_per_vbyte.
//Deprecated, use sweep_sat_per_vbyte. // The fee rate, in satoshis per vbyte, that will be used by watchtowers for
//The fee rate, in satoshis per vbyte, that will be used by watchtowers for // justice transactions in response to channel breaches.
//justice transactions in response to channel breaches.
// //
// Deprecated: Do not use. // Deprecated: Do not use.
SweepSatPerByte uint32 `protobuf:"varint,2,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"` SweepSatPerByte uint32 `protobuf:"varint,2,opt,name=sweep_sat_per_byte,json=sweepSatPerByte,proto3" json:"sweep_sat_per_byte,omitempty"`
// // The fee rate, in satoshis per vbyte, that will be used by watchtowers for
//The fee rate, in satoshis per vbyte, that will be used by watchtowers for // justice transactions in response to channel breaches.
//justice transactions in response to channel breaches.
SweepSatPerVbyte uint32 `protobuf:"varint,3,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"` SweepSatPerVbyte uint32 `protobuf:"varint,3,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"`
} }
+16 -20
View File
@@ -18,17 +18,15 @@ const _ = grpc.SupportPackageIsVersion7
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WatchtowerClientClient interface { type WatchtowerClientClient interface {
// // AddTower adds a new watchtower reachable at the given address and
//AddTower adds a new watchtower reachable at the given address and // considers it for new sessions. If the watchtower already exists, then
//considers it for new sessions. If the watchtower already exists, then // any new addresses included will be considered when dialing it for
//any new addresses included will be considered when dialing it for // session negotiations and backups.
//session negotiations and backups.
AddTower(ctx context.Context, in *AddTowerRequest, opts ...grpc.CallOption) (*AddTowerResponse, error) AddTower(ctx context.Context, in *AddTowerRequest, opts ...grpc.CallOption) (*AddTowerResponse, error)
// // RemoveTower removes a watchtower from being considered for future session
//RemoveTower removes a watchtower from being considered for future session // negotiations and from being used for any subsequent backups until it's added
//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
//again. If an address is provided, then this RPC only serves as a way of // removing the address from the watchtower instead.
//removing the address from the watchtower instead.
RemoveTower(ctx context.Context, in *RemoveTowerRequest, opts ...grpc.CallOption) (*RemoveTowerResponse, error) RemoveTower(ctx context.Context, in *RemoveTowerRequest, opts ...grpc.CallOption) (*RemoveTowerResponse, error)
// ListTowers returns the list of watchtowers registered with the client. // ListTowers returns the list of watchtowers registered with the client.
ListTowers(ctx context.Context, in *ListTowersRequest, opts ...grpc.CallOption) (*ListTowersResponse, error) ListTowers(ctx context.Context, in *ListTowersRequest, opts ...grpc.CallOption) (*ListTowersResponse, error)
@@ -106,17 +104,15 @@ func (c *watchtowerClientClient) Policy(ctx context.Context, in *PolicyRequest,
// All implementations must embed UnimplementedWatchtowerClientServer // All implementations must embed UnimplementedWatchtowerClientServer
// for forward compatibility // for forward compatibility
type WatchtowerClientServer interface { type WatchtowerClientServer interface {
// // AddTower adds a new watchtower reachable at the given address and
//AddTower adds a new watchtower reachable at the given address and // considers it for new sessions. If the watchtower already exists, then
//considers it for new sessions. If the watchtower already exists, then // any new addresses included will be considered when dialing it for
//any new addresses included will be considered when dialing it for // session negotiations and backups.
//session negotiations and backups.
AddTower(context.Context, *AddTowerRequest) (*AddTowerResponse, error) AddTower(context.Context, *AddTowerRequest) (*AddTowerResponse, error)
// // RemoveTower removes a watchtower from being considered for future session
//RemoveTower removes a watchtower from being considered for future session // negotiations and from being used for any subsequent backups until it's added
//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
//again. If an address is provided, then this RPC only serves as a way of // removing the address from the watchtower instead.
//removing the address from the watchtower instead.
RemoveTower(context.Context, *RemoveTowerRequest) (*RemoveTowerResponse, error) RemoveTower(context.Context, *RemoveTowerRequest) (*RemoveTowerResponse, error)
// ListTowers returns the list of watchtowers registered with the client. // ListTowers returns the list of watchtowers registered with the client.
ListTowers(context.Context, *ListTowersRequest) (*ListTowersResponse, error) ListTowers(context.Context, *ListTowersRequest) (*ListTowersResponse, error)
+1 -1
View File
@@ -4,7 +4,7 @@
# /dev.Dockerfile # /dev.Dockerfile
# /.github/workflows/main.yml # /.github/workflows/main.yml
# /.github/workflows/release.yml # /.github/workflows/release.yml
FROM golang:1.18.2-buster FROM golang:1.19-buster
MAINTAINER Olaoluwa Osuntokun <laolu@lightning.engineering> MAINTAINER Olaoluwa Osuntokun <laolu@lightning.engineering>
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.18.2-buster FROM golang:1.19-buster
RUN apt-get update && apt-get install -y git RUN apt-get update && apt-get install -y git
ENV GOCACHE=/tmp/build/.cache ENV GOCACHE=/tmp/build/.cache