Merge pull request #11200 from ziggie1984/build-go-1.27.1
What changed, and why it matters
This commit updates the Go programming language version used to build LND from 1.25.13/1.26.6 to 1.26.8 (language version) and 1.27.1 (toolchain). It also regenerates many automatically generated RPC files and adjusts linter settings. The main security angle is that newer Go releases typically fix bugs and security vulnerabilities in the Go runtime and standard library, so staying current is good defensive hygiene. However, the commit itself does not describe any specific vulnerability being fixed, and the code changes are mostly version bumps and generated file updates rather than targeted security patches.
Treat this as a routine maintenance/toolchain upgrade. Verify that the Go 1.27.1 release notes do not contain any high-severity security issues relevant to LND's use of the runtime, net/http, crypto, or other standard-library packages. Run the project's test suite and govulncheck after the upgrade. No immediate incident response is warranted based solely on this commit.
Security signals we found
Go version bump may indirectly address unlisted runtime/standard-library security fixes
Large regenerated protobuf files suggest dependency/toolchain refresh rather than logic change
Linter configuration expanded to suppress new checks, consistent with a toolchain upgrade
No explicit CVE, advisory, or security-relevant code change is present in the commit message or diff
Evidence from the diff
The commit bumps the Go language version to 1.26.8 and the release/toolchain version to 1.27.1 across go.mod files, Dockerfiles, GitHub Actions workflows, Makefile, and documentation. It also regenerates a large number of protobuf-generated Go files (lnrpc/_grpc.pb.go and .pb.go), which show only comment-formatting differences. Additional minor changes include linter configuration updates in .golangci.yml (disabling new/updated linters such as canonicalheader, exhaustruct_v5, gomodguard, modernize, testifylint, perfsprint, inamedparam) and small comment/docstring fixes in chanstate/kv_open_channel.go, contractcourt/chain_arbitrator.go, and itest/lnd_psbt_test.go. No direct vulnerability fix or behavior-altering code change is visible in the diff.
Changed components
Build system (Makefile, GitHub Actions, Dockerfiles)Go module declarations (go.mod across main module and submodules)Generated gRPC/protobuf bindings (lnrpc/*.pb.go, *_grpc.pb.go)Linter configuration (.golangci.yml)Documentation (docs/INSTALL.md, mobile/README.md)Inspect captured patch +4932 / −4126
### .github/actions/setup-go/action.yml
@@ -52,8 +52,8 @@ runs:
# The key is used to create and later look up the cache. It's made of
# four parts:
# - The base part is made from the OS name, Go version and a
- # job-specified key prefix. Example: `linux-go-1.26.6-unit-test-`.
- # It ensures that a job running on Linux with Go 1.26 only looks for
+ # job-specified key prefix. Example: `linux-go-1.27.1-unit-test-`.
+ # It ensures that a job running on Linux with Go 1.27 only looks for
# caches from the same environment.
# - The unique part is the `hashFiles('**/go.sum')`, which calculates a
# hash (a fingerprint) of the go.sum file.
### .github/workflows/govulncheck.yml
@@ -40,7 +40,7 @@ defaults:
env:
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
- GO_VERSION: 1.26.6
+ GO_VERSION: 1.27.1
jobs:
govulncheck:
### .github/workflows/main.yml
@@ -41,7 +41,7 @@ env:
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
- GO_VERSION: 1.26.6
+ GO_VERSION: 1.27.1
jobs:
static-checks:
### .github/workflows/release.yaml
@@ -12,7 +12,7 @@ defaults:
env:
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
- GO_VERSION: 1.26.6
+ GO_VERSION: 1.27.1
jobs:
########################
### .golangci.yml
@@ -3,7 +3,7 @@ version: "2"
run:
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
- go: "1.26.6"
+ go: "1.27.1"
# Abort after 10 minutes.
timeout: 10m
@@ -69,13 +69,23 @@ linters:
# have no context to thread through, so it adds little value for now.
- noctx
+ # canonicalheader prefers registered initialism spellings such as
+ # Sec-WebSocket-Protocol, which can differ from the keys produced by
+ # net/http.CanonicalHeaderKey. Using those spellings as direct http.Header
+ # map keys can therefore break lookups.
+ - canonicalheader
+
# Disable whitespace linters as it has conflict rules against our
# contribution guidelines.
- wsl
- wsl_v5
# Allow using default empty values.
- exhaustruct
+ - exhaustruct_v5
+
+ # Use the v2 replacement instead of the deprecated implementation.
+ - gomodguard
# Allow exiting case select faster by putting everything in default.
- exhaustive
@@ -122,7 +132,8 @@ linters:
# unit tests become our CI bottleneck.
- paralleltest
- # New linters that we haven't had time to address yet.
+ # New linters and expanded checks that we haven't had time to address yet.
+ - modernize
- testifylint
- perfsprint
- inamedparam
### Dockerfile
@@ -1,6 +1,6 @@
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
-FROM golang:1.26.6-alpine as builder
+FROM golang:1.27.1-alpine as builder
# Force Go to use the cgo based DNS resolver. This is required to ensure DNS
# queries required to connect to linked containers succeed.
### Makefile
@@ -36,7 +36,7 @@ ACTIVE_GO_VERSION_MINOR := $(shell echo $(ACTIVE_GO_VERSION) | cut -d. -f2)
# GO_VERSION is the Go version used for the release build, docker files, and
# GitHub Actions. This is the reference version for the project. All other Go
# versions are checked against this version.
-GO_VERSION = 1.26.6
+GO_VERSION = 1.27.1
GOBUILD := $(GOCC) build -v
GOINSTALL := $(GOCC) install -v
### actor/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/actor
-go 1.25.13
+go 1.26.8
require (
github.com/btcsuite/btclog/v2 v2.0.1-0.20250602222548-9967d19bb084
### cert/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/cert
-go 1.25.13
+go 1.26.8
require github.com/stretchr/testify v1.8.2
### chanstate/kv_open_channel.go
@@ -52,8 +52,8 @@ func FetchChannelDataLossCommitPoint(
}
const (
- // A tlv type definition used to serialize an outpoint's IndexStatus
- // for use in the outpoint index.
+ // IndexStatusType is a TLV type definition used to serialize an
+ // outpoint's IndexStatus for use in the outpoint index.
IndexStatusType tlv.Type = 0
)
### clock/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/clock
-go 1.25.13
+go 1.26.8
require github.com/stretchr/testify v1.8.2
### contractcourt/chain_arbitrator.go
@@ -1343,7 +1343,7 @@ func (c *ChainArbitrator) FindOutgoingHTLCDeadline(scid lnwire.ShortChannelID,
// TODO(roasbeef): arbitration reports
// * types: contested, waiting for success conf, etc
-// NOTE: part of the `chainio.Consumer` interface.
+// Name returns the name of the chain arbitrator consumer.
func (c *ChainArbitrator) Name() string {
return "ChainArbitrator"
}
### dev.Dockerfile
@@ -1,6 +1,6 @@
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
-FROM golang:1.26.6-alpine AS builder
+FROM golang:1.27.1-alpine AS builder
LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>"
### docker/btcd/Dockerfile
@@ -1,6 +1,6 @@
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
-FROM golang:1.26.6-alpine AS builder
+FROM golang:1.27.1-alpine AS builder
LABEL maintainer="Olaoluwa Osuntokun <laolu@lightning.engineering>"
### docs/INSTALL.md
@@ -93,23 +93,23 @@ following build dependencies are required:
### Installing Go
-`lnd` is written in Go, with a minimum version of `1.25.13` (or, in case this
+`lnd` is written in Go, with a minimum version of `1.26.8` (or, in case this
document gets out of date, whatever the Go version in the main `go.mod` file
requires). To install, run one of the following commands for your OS:
<details>
<summary>Linux (x86-64)</summary>
```
- wget https://dl.google.com/go/go1.25.13.linux-amd64.tar.gz
- echo "39042a078ea9ceebe3ecda4a7188f0f5b96e14a071d27923ba7f40b456e85ae3 go1.25.13.linux-amd64.tar.gz" | sha256sum --check
+ wget https://dl.google.com/go/go1.26.8.linux-amd64.tar.gz
+ echo "d0f743b33e8d8945e6b1f432edd15785c70507121d6e2a723b21285eddf8b57b go1.26.8.linux-amd64.tar.gz" | sha256sum --check
```
- The command above should output `go1.25.13.linux-amd64.tar.gz: OK`. If it
+ The command above should output `go1.26.8.linux-amd64.tar.gz: OK`. If it
doesn't, then the target REPO HAS BEEN MODIFIED, and you shouldn't install
this version of Go. If it matches, then proceed to install Go:
```
- sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.25.13.linux-amd64.tar.gz
+ sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.8.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
```
</details>
@@ -118,15 +118,15 @@ requires). To install, run one of the following commands for your OS:
<summary>Linux (ARMv6)</summary>
```
- wget https://dl.google.com/go/go1.25.13.linux-armv6l.tar.gz
- echo "f98ba3beb03a5c269d0115c7f8573483c139be88ce9989e53aff336826d13f5c go1.25.13.linux-armv6l.tar.gz" | sha256sum --check
+ wget https://dl.google.com/go/go1.26.8.linux-armv6l.tar.gz
+ echo "eab440beabf395870752021fa74cedf04f97b61e43ebbe005ecbb98b94e55697 go1.26.8.linux-armv6l.tar.gz" | sha256sum --check
```
- The command above should output `go1.25.13.linux-armv6l.tar.gz: OK`. If it
+ The command above should output `go1.26.8.linux-armv6l.tar.gz: OK`. If it
isn't, then the target REPO HAS BEEN MODIFIED, and you shouldn't install
this version of Go. If it matches, then proceed to install Go:
```
- sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.25.13.linux-armv6l.tar.gz
+ sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.8.linux-armv6l.tar.gz
export PATH=$PATH:/usr/local/go/bin
```
### fn/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/fn/v2
-go 1.25.13
+go 1.26.8
require (
github.com/stretchr/testify v1.8.1
### go.mod
@@ -217,7 +217,7 @@ replace google.golang.org/protobuf => github.com/lightninglabs/protobuf-go-hex-d
// If you change this please also update docs/INSTALL.md and all other go.mod
// files. The release build toolchain version is tracked separately by
// GO_VERSION in Makefile.
-go 1.25.13
+go 1.26.8
retract v0.0.2
### healthcheck/go.mod
@@ -23,4 +23,4 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)
-go 1.25.13
+go 1.26.8
### itest/lnd_psbt_test.go
@@ -1233,12 +1233,12 @@ func getAddressBip32Derivation(t testing.TB, addr string,
path[2] += hdkeychain.HardenedKeyStart
return &psbt.Bip32Derivation{
- PubKey: pubKeyBytes,
- Bip32Path: path,
- }, &psbt.TaprootBip32Derivation{
- XOnlyPubKey: pubKeyBytes[1:],
- Bip32Path: path,
- }
+ PubKey: pubKeyBytes,
+ Bip32Path: path,
+ }, &psbt.TaprootBip32Derivation{
+ XOnlyPubKey: pubKeyBytes[1:],
+ Bip32Path: path,
+ }
}
// fundPsbtCoinSelect calls the FundPsbt RPC on the given node using the coin
### kvdb/go.mod
@@ -143,4 +143,4 @@ require (
sigs.k8s.io/yaml v1.2.0 // indirect
)
-go 1.25.13
+go 1.26.8
### lnrpc/Dockerfile
@@ -1,6 +1,6 @@
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
-FROM golang:1.26.6-bookworm
+FROM golang:1.27.1-bookworm
RUN apt-get update && apt-get install -y \
git \
### lnrpc/autopilotrpc/autopilot.pb.go
@@ -284,8 +284,9 @@ type SetScoresRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The name of the heuristic to provide scores to.
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
- // [0.0, 1.0].
+ //
+ //A map from hex-encoded public keys to scores. Scores must be in the range
+ //[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" protobuf_val:"fixed64,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/autopilotrpc/autopilot_grpc.pb.go
@@ -19,18 +19,20 @@ 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.
type AutopilotClient interface {
// lncli: `autopilot status`
- // 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)
- // ModifyStatus is used to modify the status of the autopilot agent, like
- // enabling or disabling it.
+ //
+ //ModifyStatus is used to modify the status of the autopilot agent, like
+ //enabling or disabling it.
ModifyStatus(ctx context.Context, in *ModifyStatusRequest, opts ...grpc.CallOption) (*ModifyStatusResponse, error)
// lncli: `autopilot query`
- // QueryScores queries all available autopilot heuristics, in addition to any
- // active combination of these heruristics, for the scores they would give to
- // the given nodes.
+ //QueryScores queries all available autopilot heuristics, in addition to any
+ //active combination of these heruristics, for the scores they would give to
+ //the given nodes.
QueryScores(ctx context.Context, in *QueryScoresRequest, opts ...grpc.CallOption) (*QueryScoresResponse, error)
- // SetScores attempts to set the scores used by the running autopilot agent,
- // if the external scoring heuristic is enabled.
+ //
+ //SetScores attempts to set the scores used by the running autopilot agent,
+ //if the external scoring heuristic is enabled.
SetScores(ctx context.Context, in *SetScoresRequest, opts ...grpc.CallOption) (*SetScoresResponse, error)
}
@@ -83,18 +85,20 @@ func (c *autopilotClient) SetScores(ctx context.Context, in *SetScoresRequest, o
// for forward compatibility
type AutopilotServer interface {
// lncli: `autopilot status`
- // 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)
- // ModifyStatus is used to modify the status of the autopilot agent, like
- // enabling or disabling it.
+ //
+ //ModifyStatus is used to modify the status of the autopilot agent, like
+ //enabling or disabling it.
ModifyStatus(context.Context, *ModifyStatusRequest) (*ModifyStatusResponse, error)
// lncli: `autopilot query`
- // QueryScores queries all available autopilot heuristics, in addition to any
- // active combination of these heruristics, for the scores they would give to
- // the given nodes.
+ //QueryScores queries all available autopilot heuristics, in addition to any
+ //active combination of these heruristics, for the scores they would give to
+ //the given nodes.
QueryScores(context.Context, *QueryScoresRequest) (*QueryScoresResponse, error)
- // SetScores attempts to set the scores used by the running autopilot agent,
- // if the external scoring heuristic is enabled.
+ //
+ //SetScores attempts to set the scores used by the running autopilot agent,
+ //if the external scoring heuristic is enabled.
SetScores(context.Context, *SetScoresRequest) (*SetScoresResponse, error)
mustEmbedUnimplementedAutopilotServer()
}
### lnrpc/chainrpc/chainkit_grpc.pb.go
@@ -19,18 +19,18 @@ 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.
type ChainKitClient interface {
// lncli: `chain getblock`
- // GetBlock returns a block given the corresponding block hash.
+ //GetBlock returns a block given the corresponding block hash.
GetBlock(ctx context.Context, in *GetBlockRequest, opts ...grpc.CallOption) (*GetBlockResponse, error)
// lncli: `chain getblockheader`
- // 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)
// lncli: `chain getbestblock`
- // GetBestBlock returns the block hash and current height from the valid
- // most-work chain.
+ //GetBestBlock returns the block hash and current height from the valid
+ //most-work chain.
GetBestBlock(ctx context.Context, in *GetBestBlockRequest, opts ...grpc.CallOption) (*GetBestBlockResponse, error)
// lncli: `chain getblockhash`
- // GetBlockHash returns the hash of the block in the best blockchain
- // at the given height.
+ //GetBlockHash returns the hash of the block in the best blockchain
+ //at the given height.
GetBlockHash(ctx context.Context, in *GetBlockHashRequest, opts ...grpc.CallOption) (*GetBlockHashResponse, error)
}
@@ -83,18 +83,18 @@ func (c *chainKitClient) GetBlockHash(ctx context.Context, in *GetBlockHashReque
// for forward compatibility
type ChainKitServer interface {
// lncli: `chain getblock`
- // GetBlock returns a block given the corresponding block hash.
+ //GetBlock returns a block given the corresponding block hash.
GetBlock(context.Context, *GetBlockRequest) (*GetBlockResponse, error)
// lncli: `chain getblockheader`
- // 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)
// lncli: `chain getbestblock`
- // GetBestBlock returns the block hash and current height from the valid
- // most-work chain.
+ //GetBestBlock returns the block hash and current height from the valid
+ //most-work chain.
GetBestBlock(context.Context, *GetBestBlockRequest) (*GetBestBlockResponse, error)
// lncli: `chain getblockhash`
- // GetBlockHash returns the hash of the block in the best blockchain
- // at the given height.
+ //GetBlockHash returns the hash of the block in the best blockchain
+ //at the given height.
GetBlockHash(context.Context, *GetBlockHashRequest) (*GetBlockHashResponse, error)
mustEmbedUnimplementedChainKitServer()
}
### lnrpc/chainrpc/chainnotifier.pb.go
@@ -23,24 +23,29 @@ const (
type ConfRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // be requested for the script instead.
+ //
+ //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
+ //be requested for the script instead.
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
- // 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
- // this script instead.
+ //
+ //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
+ //hash of all zeros, then a confirmation notification will be requested for
+ //this script instead.
Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"`
- // The number of desired confirmations the transaction/output script should
- // reach before dispatching a confirmation notification.
+ //
+ //The number of desired confirmations the transaction/output script should
+ //reach before dispatching a confirmation notification.
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
- // could have been included in a block. This should in most cases be set to the
- // broadcast height of 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
+ //broadcast height of the transaction/output script.
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
- // included in eventual the notification event.
+ //
+ //If true, then the block that mines the specified txid/script will be
+ //included in eventual the notification event.
IncludeBlock bool `protobuf:"varint,5,opt,name=include_block,json=includeBlock,proto3" json:"include_block,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -122,8 +127,9 @@ type ConfDetails struct {
BlockHeight uint32 `protobuf:"varint,3,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
// The index of the confirmed transaction within the block.
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
- // include_block was set in the request.
+ //
+ //The raw bytes of the block that mined the transaction. Only included if
+ //include_block was set in the request.
RawBlock []byte `protobuf:"bytes,5,opt,name=raw_block,json=rawBlock,proto3" json:"raw_block,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -301,14 +307,16 @@ type isConfEvent_Event interface {
}
type ConfEvent_Conf struct {
- // An event that includes the confirmation details of the request
- // (txid/ouput script).
+ //
+ //An event that includes the confirmation details of the request
+ //(txid/ouput script).
Conf *ConfDetails `protobuf:"bytes,1,opt,name=conf,proto3,oneof"`
}
type ConfEvent_Reorg struct {
- // An event send when the transaction of the request is reorged out of the
- // chain.
+ //
+ //An event send when the transaction of the request is reorged out of the
+ //chain.
Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"`
}
@@ -372,21 +380,24 @@ func (x *Outpoint) GetIndex() uint32 {
type SpendRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // 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
- // and the spent output script is not always available in the rescan context.
- // So an outpoint must _always_ be specified when registering a spend
- // notification for a Taproot output.
+ //
+ //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
+ //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
+ //and the spent output script is not always available in the rescan context.
+ //So an outpoint must _always_ be specified when registering a spend
+ //notification for a Taproot output.
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
- // to match block filters. If the outpoint is set to a zero outpoint, then a
- // spend notification will be requested for this script instead.
+ //
+ //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
+ //spend notification will be requested for this script instead.
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
- // have been spent. This should in most cases be set to the broadcast height of
- // the outpoint/output script.
+ //
+ //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
+ //the outpoint/output script.
HeightHint uint32 `protobuf:"varint,3,opt,name=height_hint,json=heightHint,proto3" json:"height_hint,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -595,14 +606,16 @@ type isSpendEvent_Event interface {
}
type SpendEvent_Spend struct {
- // An event that includes the details of the spending transaction of the
- // request (outpoint/output script).
+ //
+ //An event that includes the details of the spending transaction of the
+ //request (outpoint/output script).
Spend *SpendDetails `protobuf:"bytes,1,opt,name=spend,proto3,oneof"`
}
type SpendEvent_Reorg struct {
- // An event sent when the spending transaction of the request was
- // reorged out of the chain.
+ //
+ //An event sent when the spending transaction of the request was
+ //reorged out of the chain.
Reorg *Reorg `protobuf:"bytes,2,opt,name=reorg,proto3,oneof"`
}
### lnrpc/chainrpc/chainnotifier_grpc.pb.go
@@ -18,32 +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.
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.
//
- // A confirmation request must have a valid output script. It is also possible
- // 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 is a synchronous response-streaming RPC that
+ //registers an intent for a client to be notified once a confirmation request
+ //has reached its required number of confirmations on-chain.
+ //
+ //A confirmation request must have a valid output script. It is also possible
+ //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)
- // RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
- // intent for a client to be notification once a spend request has been spent
- // by a transaction that has confirmed on-chain.
//
- // A client can specify whether the spend request should be for a particular
- // outpoint or for an output script by specifying a zero outpoint.
+ //RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
+ //intent for a client to be notification once a spend request has been spent
+ //by a transaction that has confirmed on-chain.
+ //
+ //A client can specify whether the spend request should be for a particular
+ //outpoint or for an output script by specifying a zero outpoint.
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.
//
- // 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 is a synchronous response-streaming RPC that
+ //registers an intent for a client to be notified of blocks in the chain. The
+ //stream will return a hash and height tuple of a block for each new/stale
+ //block in the chain. It is the client's responsibility to determine whether
+ //the tuple returned is for a new or stale block in the chain.
+ //
+ //A client can also request a historical backlog of blocks from a particular
+ //point. This allows clients to be idempotent by ensuring that they do not
+ //missing processing a single block within the chain.
RegisterBlockEpochNtfn(ctx context.Context, in *BlockEpoch, opts ...grpc.CallOption) (ChainNotifier_RegisterBlockEpochNtfnClient, error)
}
@@ -155,32 +158,35 @@ func (x *chainNotifierRegisterBlockEpochNtfnClient) Recv() (*BlockEpoch, error)
// All implementations must embed UnimplementedChainNotifierServer
// for forward compatibility
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.
//
- // A confirmation request must have a valid output script. It is also possible
- // 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 is a synchronous response-streaming RPC that
+ //registers an intent for a client to be notified once a confirmation request
+ //has reached its required number of confirmations on-chain.
+ //
+ //A confirmation request must have a valid output script. It is also possible
+ //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
- // RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
- // intent for a client to be notification once a spend request has been spent
- // by a transaction that has confirmed on-chain.
//
- // A client can specify whether the spend request should be for a particular
- // outpoint or for an output script by specifying a zero outpoint.
+ //RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
+ //intent for a client to be notification once a spend request has been spent
+ //by a transaction that has confirmed on-chain.
+ //
+ //A client can specify whether the spend request should be for a particular
+ //outpoint or for an output script by specifying a zero outpoint.
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.
//
- // 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 is a synchronous response-streaming RPC that
+ //registers an intent for a client to be notified of blocks in the chain. The
+ //stream will return a hash and height tuple of a block for each new/stale
+ //block in the chain. It is the client's responsibility to determine whether
+ //the tuple returned is for a new or stale block in the chain.
+ //
+ //A client can also request a historical backlog of blocks from a particular
+ //point. This allows clients to be idempotent by ensuring that they do not
+ //missing processing a single block within the chain.
RegisterBlockEpochNtfn(*BlockEpoch, ChainNotifier_RegisterBlockEpochNtfnServer) error
mustEmbedUnimplementedChainNotifierServer()
}
### lnrpc/devrpc/dev_grpc.pb.go
@@ -20,12 +20,13 @@ 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.
type DevClient interface {
// lncli: `importgraph`
- // ImportGraph imports a ChannelGraph into the graph database. Should only be
- // used for development.
+ //ImportGraph imports a ChannelGraph into the graph database. Should only be
+ //used for development.
ImportGraph(ctx context.Context, in *lnrpc.ChannelGraph, opts ...grpc.CallOption) (*ImportGraphResponse, error)
- // Quiesce instructs a channel to initiate the quiescence (stfu) protocol. This
- // RPC is for testing purposes only. The commit that adds it will be removed
- // once interop is confirmed.
+ //
+ //Quiesce instructs a channel to initiate the quiescence (stfu) protocol. This
+ //RPC is for testing purposes only. The commit that adds it will be removed
+ //once interop is confirmed.
Quiesce(ctx context.Context, in *QuiescenceRequest, opts ...grpc.CallOption) (*QuiescenceResponse, error)
}
@@ -60,12 +61,13 @@ func (c *devClient) Quiesce(ctx context.Context, in *QuiescenceRequest, opts ...
// for forward compatibility
type DevServer interface {
// lncli: `importgraph`
- // ImportGraph imports a ChannelGraph into the graph database. Should only be
- // used for development.
+ //ImportGraph imports a ChannelGraph into the graph database. Should only be
+ //used for development.
ImportGraph(context.Context, *lnrpc.ChannelGraph) (*ImportGraphResponse, error)
- // Quiesce instructs a channel to initiate the quiescence (stfu) protocol. This
- // RPC is for testing purposes only. The commit that adds it will be removed
- // once interop is confirmed.
+ //
+ //Quiesce instructs a channel to initiate the quiescence (stfu) protocol. This
+ //RPC is for testing purposes only. The commit that adds it will be removed
+ //once interop is confirmed.
Quiesce(context.Context, *QuiescenceRequest) (*QuiescenceResponse, error)
mustEmbedUnimplementedDevServer()
}
### lnrpc/gen_protos_docker.sh
@@ -6,7 +6,7 @@ set -e
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# golang docker image version used in this script.
-GO_IMAGE=docker.io/library/golang:1.26.6-alpine
+GO_IMAGE=docker.io/library/golang:1.27.1-alpine
PROTOBUF_VERSION=$(docker run --rm -v $DIR/../:/lnd -w /lnd $GO_IMAGE \
go list -f '{{.Version}}' -m google.golang.org/protobuf)
### lnrpc/invoicesrpc/invoices.pb.go
@@ -27,13 +27,15 @@ type LookupModifier int32
const (
// The default look up modifier, no look up behavior is changed.
LookupModifier_DEFAULT LookupModifier = 0
- // 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.
+ //
+ //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.
LookupModifier_HTLC_SET_ONLY LookupModifier = 1
- // 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
- // 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.
+ //
+ //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
+ //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.
LookupModifier_HTLC_SET_BLANK LookupModifier = 2
)
@@ -162,33 +164,38 @@ func (*CancelInvoiceResp) Descriptor() ([]byte, []int) {
type AddHoldInvoiceRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // field of the encoded payment request if the description_hash field is not
- // being used.
+ //
+ //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
+ //field of the encoded payment request if the description_hash field is not
+ //being used.
Memo string `protobuf:"bytes,1,opt,name=memo,proto3" json:"memo,omitempty"`
// The hash of the preimage
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
- // The value of this invoice in satoshis
//
- // The fields value and value_msat are mutually exclusive.
+ //The value of this invoice in satoshis
+ //
+ //The fields value and value_msat are mutually exclusive.
Value int64 `protobuf:"varint,3,opt,name=value,proto3" json:"value,omitempty"`
- // The value of this invoice in millisatoshis
//
- // The fields value and value_msat are mutually exclusive.
+ //The value of this invoice in millisatoshis
+ //
+ //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"`
- // 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
- // of an encoded payment request.
+ //
+ //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
+ //of an encoded payment request.
DescriptionHash []byte `protobuf:"bytes,4,opt,name=description_hash,json=descriptionHash,proto3" json:"description_hash,omitempty"`
// Payment request expiry time in seconds. Default is 86400 (24 hours).
Expiry int64 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"`
// Fallback on-chain address.
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.
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
- // invoice's destination.
+ //
+ //Route hints that can each be individually used to assist in reaching the
+ //invoice's destination.
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.
Private bool `protobuf:"varint,9,opt,name=private,proto3" json:"private,omitempty"`
@@ -298,19 +305,22 @@ func (x *AddHoldInvoiceRequest) GetPrivate() bool {
type AddHoldInvoiceResp struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // payment to the recipient.
+ //
+ //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
+ //payment to the recipient.
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
- // this index making it monotonically increasing. Callers to the
- // SubscribeInvoices call can use this to instantly get notified of all added
- // invoices with an add_index greater than this one.
+ //
+ //The "add" index of this invoice. Each newly created invoice will increment
+ //this index making it monotonically increasing. Callers to the
+ //SubscribeInvoices call can use this to instantly get notified of all added
+ //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"`
- // The payment address of the generated invoice. This is also called
- // the payment secret in specifications (e.g. BOLT 11). This value should
- // be used in all payments for this invoice as we require it for end to end
- // security.
+ //
+ //The payment address of the generated invoice. This is also called
+ //the payment secret in specifications (e.g. BOLT 11). This value should
+ //be used in all payments for this invoice as we require it for end to end
+ //security.
PaymentAddr []byte `protobuf:"bytes,3,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/invoicesrpc/invoices_grpc.pb.go
@@ -19,30 +19,33 @@ 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.
type InvoicesClient interface {
- // SubscribeSingleInvoice returns a uni-directional stream (server -> client)
- // to notify the client of state transitions of the specified invoice.
- // Initially the current invoice state is always sent out.
+ //
+ //SubscribeSingleInvoice returns a uni-directional stream (server -> client)
+ //to notify the client of state transitions of the specified invoice.
+ //Initially the current invoice state is always sent out.
SubscribeSingleInvoice(ctx context.Context, in *SubscribeSingleInvoiceRequest, opts ...grpc.CallOption) (Invoices_SubscribeSingleInvoiceClient, error)
// lncli: `cancelinvoice`
- // CancelInvoice cancels a currently open invoice. If the invoice is already
- // canceled, this call will succeed. If the invoice is already settled, it will
- // fail.
+ //CancelInvoice cancels a currently open invoice. If the invoice is already
+ //canceled, this call will succeed. If the invoice is already settled, it will
+ //fail.
CancelInvoice(ctx context.Context, in *CancelInvoiceMsg, opts ...grpc.CallOption) (*CancelInvoiceResp, error)
// lncli: `addholdinvoice`
- // AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
- // supplied in the request.
+ //AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
+ //supplied in the request.
AddHoldInvoice(ctx context.Context, in *AddHoldInvoiceRequest, opts ...grpc.CallOption) (*AddHoldInvoiceResp, error)
// lncli: `settleinvoice`
- // SettleInvoice settles an accepted invoice. If the invoice is already
- // settled, this call will succeed.
+ //SettleInvoice settles an accepted invoice. If the invoice is already
+ //settled, this call will succeed.
SettleInvoice(ctx context.Context, in *SettleInvoiceMsg, opts ...grpc.CallOption) (*SettleInvoiceResp, error)
- // LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced
- // using either its payment hash, payment address, or set ID.
+ //
+ //LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced
+ //using either its payment hash, payment address, or set ID.
LookupInvoiceV2(ctx context.Context, in *LookupInvoiceMsg, opts ...grpc.CallOption) (*lnrpc.Invoice, error)
- // HtlcModifier is a bidirectional streaming RPC that allows a client to
- // intercept and modify the HTLCs that attempt to settle the given invoice. The
- // server will send HTLCs of invoices to the client and the client can modify
- // some aspects of the HTLC in order to pass the invoice acceptance tests.
+ //
+ //HtlcModifier is a bidirectional streaming RPC that allows a client to
+ //intercept and modify the HTLCs that attempt to settle the given invoice. The
+ //server will send HTLCs of invoices to the client and the client can modify
+ //some aspects of the HTLC in order to pass the invoice acceptance tests.
HtlcModifier(ctx context.Context, opts ...grpc.CallOption) (Invoices_HtlcModifierClient, error)
}
@@ -157,30 +160,33 @@ func (x *invoicesHtlcModifierClient) Recv() (*HtlcModifyRequest, error) {
// All implementations must embed UnimplementedInvoicesServer
// for forward compatibility
type InvoicesServer interface {
- // SubscribeSingleInvoice returns a uni-directional stream (server -> client)
- // to notify the client of state transitions of the specified invoice.
- // Initially the current invoice state is always sent out.
+ //
+ //SubscribeSingleInvoice returns a uni-directional stream (server -> client)
+ //to notify the client of state transitions of the specified invoice.
+ //Initially the current invoice state is always sent out.
SubscribeSingleInvoice(*SubscribeSingleInvoiceRequest, Invoices_SubscribeSingleInvoiceServer) error
// lncli: `cancelinvoice`
- // CancelInvoice cancels a currently open invoice. If the invoice is already
- // canceled, this call will succeed. If the invoice is already settled, it will
- // fail.
+ //CancelInvoice cancels a currently open invoice. If the invoice is already
+ //canceled, this call will succeed. If the invoice is already settled, it will
+ //fail.
CancelInvoice(context.Context, *CancelInvoiceMsg) (*CancelInvoiceResp, error)
// lncli: `addholdinvoice`
- // AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
- // supplied in the request.
+ //AddHoldInvoice creates a hold invoice. It ties the invoice to the hash
+ //supplied in the request.
AddHoldInvoice(context.Context, *AddHoldInvoiceRequest) (*AddHoldInvoiceResp, error)
// lncli: `settleinvoice`
- // SettleInvoice settles an accepted invoice. If the invoice is already
- // settled, this call will succeed.
+ //SettleInvoice settles an accepted invoice. If the invoice is already
+ //settled, this call will succeed.
SettleInvoice(context.Context, *SettleInvoiceMsg) (*SettleInvoiceResp, error)
- // LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced
- // using either its payment hash, payment address, or set ID.
+ //
+ //LookupInvoiceV2 attempts to look up at invoice. An invoice can be referenced
+ //using either its payment hash, payment address, or set ID.
LookupInvoiceV2(context.Context, *LookupInvoiceMsg) (*lnrpc.Invoice, error)
- // HtlcModifier is a bidirectional streaming RPC that allows a client to
- // intercept and modify the HTLCs that attempt to settle the given invoice. The
- // server will send HTLCs of invoices to the client and the client can modify
- // some aspects of the HTLC in order to pass the invoice acceptance tests.
+ //
+ //HtlcModifier is a bidirectional streaming RPC that allows a client to
+ //intercept and modify the HTLCs that attempt to settle the given invoice. The
+ //server will send HTLCs of invoices to the client and the client can modify
+ //some aspects of the HTLC in order to pass the invoice acceptance tests.
HtlcModifier(Invoices_HtlcModifierServer) error
mustEmbedUnimplementedInvoicesServer()
}
### lnrpc/lightning.pb.go
[binary or diff unavailable]
### lnrpc/lightning_grpc.pb.go
@@ -19,389 +19,402 @@ 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.
type LightningClient interface {
// lncli: `walletbalance`
- // WalletBalance returns total unspent outputs(confirmed and unconfirmed), all
- // confirmed unspent outputs and all unconfirmed unspent outputs under control
- // of the wallet.
+ //WalletBalance returns total unspent outputs(confirmed and unconfirmed), all
+ //confirmed unspent outputs and all unconfirmed unspent outputs under control
+ //of the wallet.
WalletBalance(ctx context.Context, in *WalletBalanceRequest, opts ...grpc.CallOption) (*WalletBalanceResponse, error)
// lncli: `channelbalance`
- // ChannelBalance returns a report on the total funds across all open channels,
- // categorized in local/remote, pending local/remote and unsettled local/remote
- // balances.
+ //ChannelBalance returns a report on the total funds across all open channels,
+ //categorized in local/remote, pending local/remote and unsettled local/remote
+ //balances.
ChannelBalance(ctx context.Context, in *ChannelBalanceRequest, opts ...grpc.CallOption) (*ChannelBalanceResponse, error)
// lncli: `listchaintxns`
- // GetTransactions returns a list describing all the known transactions
- // relevant to the wallet.
+ //GetTransactions returns a list describing all the known transactions
+ //relevant to the wallet.
GetTransactions(ctx context.Context, in *GetTransactionsRequest, opts ...grpc.CallOption) (*TransactionDetails, error)
// lncli: `estimatefee`
- // EstimateFee asks the chain backend to estimate the fee rate and total fees
- // for a transaction that pays to multiple specified outputs.
+ //EstimateFee asks the chain backend to estimate the fee rate and total fees
+ //for a transaction that pays to multiple specified outputs.
//
- // When using REST, the `AddrToAmount` map type can be set by appending
- // `&AddrToAmount[<address>]=<amount_to_send>` to the URL. Unfortunately this
- // map type doesn't appear in the REST API documentation because of a bug in
- // the grpc-gateway library.
+ //When using REST, the `AddrToAmount` map type can be set by appending
+ //`&AddrToAmount[<address>]=<amount_to_send>` to the URL. Unfortunately this
+ //map type doesn't appear in the REST API documentation because of a bug in
+ //the grpc-gateway library.
EstimateFee(ctx context.Context, in *EstimateFeeRequest, opts ...grpc.CallOption) (*EstimateFeeResponse, error)
// lncli: `sendcoins`
- // SendCoins executes a request to send coins to a particular address. Unlike
- // SendMany, this RPC call only allows creating a single output at a time. If
- // neither target_conf, or sat_per_vbyte are set, then the internal wallet will
- // consult its fee model to determine a fee for the default confirmation
- // target.
+ //SendCoins executes a request to send coins to a particular address. Unlike
+ //SendMany, this RPC call only allows creating a single output at a time. If
+ //neither target_conf, or sat_per_vbyte are set, then the internal wallet will
+ //consult its fee model to determine a fee for the default confirmation
+ //target.
SendCoins(ctx context.Context, in *SendCoinsRequest, opts ...grpc.CallOption) (*SendCoinsResponse, error)
// lncli: `listunspent`
- // Deprecated, use walletrpc.ListUnspent instead.
+ //Deprecated, use walletrpc.ListUnspent instead.
//
- // ListUnspent returns a list of all utxos spendable by the wallet with a
- // number of confirmations between the specified minimum and maximum.
+ //ListUnspent returns a list of all utxos spendable by the wallet with a
+ //number of confirmations between the specified minimum and maximum.
ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error)
- // SubscribeTransactions creates a uni-directional stream from the server to
- // the client in which any newly discovered transactions relevant to the
- // wallet are sent over.
+ //
+ //SubscribeTransactions creates a uni-directional stream from the server to
+ //the client in which any newly discovered transactions relevant to the
+ //wallet are sent over.
SubscribeTransactions(ctx context.Context, in *GetTransactionsRequest, opts ...grpc.CallOption) (Lightning_SubscribeTransactionsClient, error)
// lncli: `sendmany`
- // SendMany handles a request for a transaction that creates multiple specified
- // outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
- // the internal wallet will consult its fee model to determine a fee for the
- // default confirmation target.
+ //SendMany handles a request for a transaction that creates multiple specified
+ //outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
+ //the internal wallet will consult its fee model to determine a fee for the
+ //default confirmation target.
SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error)
// lncli: `newaddress`
- // NewAddress creates a new address under control of the local wallet.
+ //NewAddress creates a new address under control of the local wallet.
NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error)
// lncli: `signmessage`
- // SignMessage signs a message with this node's private key. The returned
- // signature string is `zbase32` encoded and pubkey recoverable, meaning that
- // only the message digest and signature are needed for verification.
+ //SignMessage signs a message with this node's private key. The returned
+ //signature string is `zbase32` encoded and pubkey recoverable, meaning that
+ //only the message digest and signature are needed for verification.
SignMessage(ctx context.Context, in *SignMessageRequest, opts ...grpc.CallOption) (*SignMessageResponse, error)
// lncli: `verifymessage`
- // VerifyMessage verifies a signature over a message and recovers the signer's
- // public key. The signature is only deemed valid if the recovered public key
- // corresponds to a node key in the public Lightning network. The signature
- // must be zbase32 encoded and signed by an active node in the resident node's
- // channel database. In addition to returning the validity of the signature,
- // VerifyMessage also returns the recovered pubkey from the signature.
+ //VerifyMessage verifies a signature over a message and recovers the signer's
+ //public key. The signature is only deemed valid if the recovered public key
+ //corresponds to a node key in the public Lightning network. The signature
+ //must be zbase32 encoded and signed by an active node in the resident node's
+ //channel database. In addition to returning the validity of the signature,
+ //VerifyMessage also returns the recovered pubkey from the signature.
VerifyMessage(ctx context.Context, in *VerifyMessageRequest, opts ...grpc.CallOption) (*VerifyMessageResponse, error)
// lncli: `connect`
- // ConnectPeer attempts to establish a connection to a remote peer. This is at
- // the networking level, and is used for communication between nodes. This is
- // distinct from establishing a channel with a peer.
+ //ConnectPeer attempts to establish a connection to a remote peer. This is at
+ //the networking level, and is used for communication between nodes. This is
+ //distinct from establishing a channel with a peer.
ConnectPeer(ctx context.Context, in *ConnectPeerRequest, opts ...grpc.CallOption) (*ConnectPeerResponse, error)
// lncli: `disconnect`
- // DisconnectPeer attempts to disconnect one peer from another identified by a
- // given pubKey. In the case that we currently have a pending or active channel
- // with the target peer, then this action will be not be allowed.
+ //DisconnectPeer attempts to disconnect one peer from another identified by a
+ //given pubKey. In the case that we currently have a pending or active channel
+ //with the target peer, then this action will be not be allowed.
DisconnectPeer(ctx context.Context, in *DisconnectPeerRequest, opts ...grpc.CallOption) (*DisconnectPeerResponse, error)
// lncli: `listpeers`
- // ListPeers returns a verbose listing of all currently active peers.
+ //ListPeers returns a verbose listing of all currently active peers.
ListPeers(ctx context.Context, in *ListPeersRequest, opts ...grpc.CallOption) (*ListPeersResponse, error)
- // SubscribePeerEvents creates a uni-directional stream from the server to
- // the client in which any events relevant to the state of peers are sent
- // over. Events include peers going online and offline.
+ //
+ //SubscribePeerEvents creates a uni-directional stream from the server to
+ //the client in which any events relevant to the state of peers are sent
+ //over. Events include peers going online and offline.
SubscribePeerEvents(ctx context.Context, in *PeerEventSubscription, opts ...grpc.CallOption) (Lightning_SubscribePeerEventsClient, error)
// lncli: `getinfo`
- // GetInfo returns general information concerning the lightning node including
- // it's identity pubkey, alias, the chains it is connected to, and information
- // concerning the number of open+pending channels.
+ //GetInfo returns general information concerning the lightning node including
+ //it's identity pubkey, alias, the chains it is connected to, and information
+ //concerning the number of open+pending channels.
GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error)
// lncli: 'getdebuginfo'
- // GetDebugInfo returns debug information concerning the state of the daemon
- // and its subsystems. This includes the full configuration and the latest log
- // entries from the log file.
+ //GetDebugInfo returns debug information concerning the state of the daemon
+ //and its subsystems. This includes the full configuration and the latest log
+ //entries from the log file.
GetDebugInfo(ctx context.Context, in *GetDebugInfoRequest, opts ...grpc.CallOption) (*GetDebugInfoResponse, error)
- // * lncli: `getrecoveryinfo`
- // GetRecoveryInfo returns information concerning the recovery mode including
- // whether it's in a recovery mode, whether the recovery is finished, and the
- // progress made so far.
+ //* lncli: `getrecoveryinfo`
+ //GetRecoveryInfo returns information concerning the recovery mode including
+ //whether it's in a recovery mode, whether the recovery is finished, and the
+ //progress made so far.
GetRecoveryInfo(ctx context.Context, in *GetRecoveryInfoRequest, opts ...grpc.CallOption) (*GetRecoveryInfoResponse, error)
// lncli: `pendingchannels`
- // PendingChannels returns a list of all the channels that are currently
- // considered "pending". A channel is pending if it has finished the funding
- // workflow and is waiting for confirmations for the funding txn, or is in the
- // process of closure, either initiated cooperatively or non-cooperatively.
+ //PendingChannels returns a list of all the channels that are currently
+ //considered "pending". A channel is pending if it has finished the funding
+ //workflow and is waiting for confirmations for the funding txn, or is in the
+ //process of closure, either initiated cooperatively or non-cooperatively.
PendingChannels(ctx context.Context, in *PendingChannelsRequest, opts ...grpc.CallOption) (*PendingChannelsResponse, error)
// lncli: `listchannels`
- // ListChannels returns a description of all the open channels that this node
- // is a participant in.
+ //ListChannels returns a description of all the open channels that this node
+ //is a participant in.
ListChannels(ctx context.Context, in *ListChannelsRequest, opts ...grpc.CallOption) (*ListChannelsResponse, error)
- // SubscribeChannelEvents creates a uni-directional stream from the server to
- // the client in which any updates relevant to the state of the channels are
- // sent over. Events include new active channels, inactive channels, and closed
- // channels.
+ //
+ //SubscribeChannelEvents creates a uni-directional stream from the server to
+ //the client in which any updates relevant to the state of the channels are
+ //sent over. Events include new active channels, inactive channels, and closed
+ //channels.
SubscribeChannelEvents(ctx context.Context, in *ChannelEventSubscription, opts ...grpc.CallOption) (Lightning_SubscribeChannelEventsClient, error)
// lncli: `closedchannels`
- // ClosedChannels returns a description of all the closed channels that
- // this node was a participant in.
+ //ClosedChannels returns a description of all the closed channels that
+ //this node was a participant in.
ClosedChannels(ctx context.Context, in *ClosedChannelsRequest, opts ...grpc.CallOption) (*ClosedChannelsResponse, error)
- // OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
- // call is meant to be consumed by clients to the REST proxy. As with all
- // other sync calls, all byte slices are intended to be populated as hex
- // encoded strings.
+ //
+ //OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
+ //call is meant to be consumed by clients to the REST proxy. As with all
+ //other sync calls, all byte slices are intended to be populated as hex
+ //encoded strings.
OpenChannelSync(ctx context.Context, in *OpenChannelRequest, opts ...grpc.CallOption) (*ChannelPoint, error)
// lncli: `openchannel`
- // OpenChannel attempts to open a singly funded channel specified in the
- // request to a remote peer. Users are able to specify a target number of
- // blocks that the funding transaction should be confirmed in, or a manual fee
- // rate to us for the funding transaction. If neither are specified, then a
- // lax block confirmation target is used. Each OpenStatusUpdate will return
- // the pending channel ID of the in-progress channel. Depending on the
- // arguments specified in the OpenChannelRequest, this pending channel ID can
- // then be used to manually progress the channel funding flow.
+ //OpenChannel attempts to open a singly funded channel specified in the
+ //request to a remote peer. Users are able to specify a target number of
+ //blocks that the funding transaction should be confirmed in, or a manual fee
+ //rate to us for the funding transaction. If neither are specified, then a
+ //lax block confirmation target is used. Each OpenStatusUpdate will return
+ //the pending channel ID of the in-progress channel. Depending on the
+ //arguments specified in the OpenChannelRequest, this pending channel ID can
+ //then be used to manually progress the channel funding flow.
OpenChannel(ctx context.Context, in *OpenChannelRequest, opts ...grpc.CallOption) (Lightning_OpenChannelClient, error)
// lncli: `batchopenchannel`
- // BatchOpenChannel attempts to open multiple single-funded channels in a
- // single transaction in an atomic way. This means either all channel open
- // requests succeed at once or all attempts are aborted if any of them fail.
- // This is the safer variant of using PSBTs to manually fund a batch of
- // channels through the OpenChannel RPC.
+ //BatchOpenChannel attempts to open multiple single-funded channels in a
+ //single transaction in an atomic way. This means either all channel open
+ //requests succeed at once or all attempts are aborted if any of them fail.
+ //This is the safer variant of using PSBTs to manually fund a batch of
+ //channels through the OpenChannel RPC.
BatchOpenChannel(ctx context.Context, in *BatchOpenChannelRequest, opts ...grpc.CallOption) (*BatchOpenChannelResponse, error)
- // FundingStateStep is an advanced funding related call that allows the caller
- // to either execute some preparatory steps for a funding workflow, or
- // manually progress a funding workflow. The primary way a funding flow is
- // identified is via its pending channel ID. As an example, this method can be
- // used to specify that we're expecting a funding flow for a particular
- // pending channel ID, for which we need to use specific parameters.
- // Alternatively, this can be used to interactively drive PSBT signing for
- // funding for partially complete funding transactions.
+ //
+ //FundingStateStep is an advanced funding related call that allows the caller
+ //to either execute some preparatory steps for a funding workflow, or
+ //manually progress a funding workflow. The primary way a funding flow is
+ //identified is via its pending channel ID. As an example, this method can be
+ //used to specify that we're expecting a funding flow for a particular
+ //pending channel ID, for which we need to use specific parameters.
+ //Alternatively, this can be used to interactively drive PSBT signing for
+ //funding for partially complete funding transactions.
FundingStateStep(ctx context.Context, in *FundingTransitionMsg, opts ...grpc.CallOption) (*FundingStateStepResp, error)
- // ChannelAcceptor dispatches a bi-directional streaming RPC in which
- // OpenChannel requests are sent to the client and the client responds with
- // a boolean that tells LND whether or not to accept the channel. This allows
- // node operators to specify their own criteria for accepting inbound channels
- // through a single persistent connection.
+ //
+ //ChannelAcceptor dispatches a bi-directional streaming RPC in which
+ //OpenChannel requests are sent to the client and the client responds with
+ //a boolean that tells LND whether or not to accept the channel. This allows
+ //node operators to specify their own criteria for accepting inbound channels
+ //through a single persistent connection.
ChannelAcceptor(ctx context.Context, opts ...grpc.CallOption) (Lightning_ChannelAcceptorClient, error)
// lncli: `closechannel`
- // CloseChannel attempts to close an active channel identified by its channel
- // outpoint (ChannelPoint). The actions of this method can additionally be
- // augmented to attempt a force close after a timeout period in the case of an
- // inactive peer. If a non-force close (cooperative closure) is requested,
- // then the user can specify either a target number of blocks until the
- // closure transaction is confirmed, or a manual fee rate. If neither are
- // specified, then a default lax, block confirmation target is used.
+ //CloseChannel attempts to close an active channel identified by its channel
+ //outpoint (ChannelPoint). The actions of this method can additionally be
+ //augmented to attempt a force close after a timeout period in the case of an
+ //inactive peer. If a non-force close (cooperative closure) is requested,
+ //then the user can specify either a target number of blocks until the
+ //closure transaction is confirmed, or a manual fee rate. If neither are
+ //specified, then a default lax, block confirmation target is used.
CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (Lightning_CloseChannelClient, error)
// lncli: `abandonchannel`
- // AbandonChannel removes all channel state from the database except for a
- // close summary. This method can be used to get rid of permanently unusable
- // channels due to bugs fixed in newer versions of lnd. This method can also be
- // used to remove externally funded channels where the funding transaction was
- // never broadcast. Only available for non-externally funded channels in dev
- // build.
+ //AbandonChannel removes all channel state from the database except for a
+ //close summary. This method can be used to get rid of permanently unusable
+ //channels due to bugs fixed in newer versions of lnd. This method can also be
+ //used to remove externally funded channels where the funding transaction was
+ //never broadcast. Only available for non-externally funded channels in dev
+ //build.
AbandonChannel(ctx context.Context, in *AbandonChannelRequest, opts ...grpc.CallOption) (*AbandonChannelResponse, error)
// lncli: `addinvoice`
- // AddInvoice attempts to add a new invoice to the invoice database. Any
- // duplicated invoices are rejected, therefore all invoices *must* have a
- // unique payment preimage.
+ //AddInvoice attempts to add a new invoice to the invoice database. Any
+ //duplicated invoices are rejected, therefore all invoices *must* have a
+ //unique payment preimage.
AddInvoice(ctx context.Context, in *Invoice, opts ...grpc.CallOption) (*AddInvoiceResponse, error)
// lncli: `listinvoices`
- // ListInvoices returns a list of all the invoices currently stored within the
- // database. Any active debug invoices are ignored. It has full support for
- // paginated responses, allowing users to query for specific invoices through
- // their add_index. This can be done by using either the first_index_offset or
- // last_index_offset fields included in the response as the index_offset of the
- // next request. By default, the first 100 invoices created will be returned.
- // Backwards pagination is also supported through the Reversed flag.
+ //ListInvoices returns a list of all the invoices currently stored within the
+ //database. Any active debug invoices are ignored. It has full support for
+ //paginated responses, allowing users to query for specific invoices through
+ //their add_index. This can be done by using either the first_index_offset or
+ //last_index_offset fields included in the response as the index_offset of the
+ //next request. By default, the first 100 invoices created will be returned.
+ //Backwards pagination is also supported through the Reversed flag.
ListInvoices(ctx context.Context, in *ListInvoiceRequest, opts ...grpc.CallOption) (*ListInvoiceResponse, error)
// lncli: `lookupinvoice`
- // LookupInvoice attempts to look up an invoice according to its payment hash.
- // The passed payment hash *must* be exactly 32 bytes, if not, an error is
- // returned.
+ //LookupInvoice attempts to look up an invoice according to its payment hash.
+ //The passed payment hash *must* be exactly 32 bytes, if not, an error is
+ //returned.
LookupInvoice(ctx context.Context, in *PaymentHash, opts ...grpc.CallOption) (*Invoice, error)
- // SubscribeInvoices returns a uni-directional stream (server -> client) for
- // notifying the client of newly added/settled invoices. The caller can
- // optionally specify the add_index and/or the settle_index. If the add_index
- // is specified, then we'll first start by sending add invoice events for all
- // invoices with an add_index greater than the specified value. If the
- // settle_index is specified, then next, we'll send out all settle events for
- // invoices with a settle_index greater than the specified value. One or both
- // of these fields can be set. If no fields are set, then we'll only send out
- // the latest add/settle events.
+ //
+ //SubscribeInvoices returns a uni-directional stream (server -> client) for
+ //notifying the client of newly added/settled invoices. The caller can
+ //optionally specify the add_index and/or the settle_index. If the add_index
+ //is specified, then we'll first start by sending add invoice events for all
+ //invoices with an add_index greater than the specified value. If the
+ //settle_index is specified, then next, we'll send out all settle events for
+ //invoices with a settle_index greater than the specified value. One or both
+ //of these fields can be set. If no fields are set, then we'll only send out
+ //the latest add/settle events.
SubscribeInvoices(ctx context.Context, in *InvoiceSubscription, opts ...grpc.CallOption) (Lightning_SubscribeInvoicesClient, error)
// lncli: `deletecanceledinvoice`
- // DeleteCanceledInvoice removes a canceled invoice from the database. If the
- // invoice is not in the canceled state, an error will be returned.
+ //DeleteCanceledInvoice removes a canceled invoice from the database. If the
+ //invoice is not in the canceled state, an error will be returned.
DeleteCanceledInvoice(ctx context.Context, in *DelCanceledInvoiceReq, opts ...grpc.CallOption) (*DelCanceledInvoiceResp, error)
// lncli: `decodepayreq`
- // DecodePayReq takes an encoded payment request string and attempts to decode
- // it, returning a full description of the conditions encoded within the
- // payment request.
+ //DecodePayReq takes an encoded payment request string and attempts to decode
+ //it, returning a full description of the conditions encoded within the
+ //payment request.
DecodePayReq(ctx context.Context, in *PayReqString, opts ...grpc.CallOption) (*PayReq, error)
// lncli: `listpayments`
- // ListPayments returns a list of all outgoing payments.
+ //ListPayments returns a list of all outgoing payments.
ListPayments(ctx context.Context, in *ListPaymentsRequest, opts ...grpc.CallOption) (*ListPaymentsResponse, error)
// lncli: `deletepayments`
- // DeletePayment deletes an outgoing payment from DB. Note that it will not
- // attempt to delete an In-Flight payment, since that would be unsafe.
+ //DeletePayment deletes an outgoing payment from DB. Note that it will not
+ //attempt to delete an In-Flight payment, since that would be unsafe.
DeletePayment(ctx context.Context, in *DeletePaymentRequest, opts ...grpc.CallOption) (*DeletePaymentResponse, error)
// lncli: `deletepayments --all`
- // DeleteAllPayments deletes all outgoing payments from DB. Note that it will
- // not attempt to delete In-Flight payments, since that would be unsafe.
+ //DeleteAllPayments deletes all outgoing payments from DB. Note that it will
+ //not attempt to delete In-Flight payments, since that would be unsafe.
DeleteAllPayments(ctx context.Context, in *DeleteAllPaymentsRequest, opts ...grpc.CallOption) (*DeleteAllPaymentsResponse, error)
// lncli: `describegraph`
- // DescribeGraph returns a description of the latest graph state from the
- // point of view of the node. The graph information is partitioned into two
- // components: all the nodes/vertexes, and all the edges that connect the
- // vertexes themselves. As this is a directed graph, the edges also contain
- // the node directional specific routing policy which includes: the time lock
- // delta, fee information, etc.
+ //DescribeGraph returns a description of the latest graph state from the
+ //point of view of the node. The graph information is partitioned into two
+ //components: all the nodes/vertexes, and all the edges that connect the
+ //vertexes themselves. As this is a directed graph, the edges also contain
+ //the node directional specific routing policy which includes: the time lock
+ //delta, fee information, etc.
DescribeGraph(ctx context.Context, in *ChannelGraphRequest, opts ...grpc.CallOption) (*ChannelGraph, error)
// lncli: `getnodemetrics`
- // GetNodeMetrics returns node metrics calculated from the graph. Currently
- // the only supported metric is betweenness centrality of individual nodes.
+ //GetNodeMetrics returns node metrics calculated from the graph. Currently
+ //the only supported metric is betweenness centrality of individual nodes.
GetNodeMetrics(ctx context.Context, in *NodeMetricsRequest, opts ...grpc.CallOption) (*NodeMetricsResponse, error)
// lncli: `getchaninfo`
- // GetChanInfo returns the latest authenticated network announcement for the
- // given channel identified by its channel ID: an 8-byte integer which
- // uniquely identifies the location of transaction's funding output within the
- // blockchain.
+ //GetChanInfo returns the latest authenticated network announcement for the
+ //given channel identified by its channel ID: an 8-byte integer which
+ //uniquely identifies the location of transaction's funding output within the
+ //blockchain.
GetChanInfo(ctx context.Context, in *ChanInfoRequest, opts ...grpc.CallOption) (*ChannelEdge, error)
// lncli: `getnodeinfo`
- // GetNodeInfo returns the latest advertised, aggregated, and authenticated
- // channel information for the specified node identified by its public key.
+ //GetNodeInfo returns the latest advertised, aggregated, and authenticated
+ //channel information for the specified node identified by its public key.
GetNodeInfo(ctx context.Context, in *NodeInfoRequest, opts ...grpc.CallOption) (*NodeInfo, error)
// lncli: `queryroutes`
- // QueryRoutes attempts to query the daemon's Channel Router for a possible
- // route to a target destination capable of carrying a specific amount of
- // satoshis. The returned route contains the full details required to craft and
- // send an HTLC, also including the necessary information that should be
- // present within the Sphinx packet encapsulated within the HTLC.
+ //QueryRoutes attempts to query the daemon's Channel Router for a possible
+ //route to a target destination capable of carrying a specific amount of
+ //satoshis. The returned route contains the full details required to craft and
+ //send an HTLC, also including the necessary information that should be
+ //present within the Sphinx packet encapsulated within the HTLC.
//
- // When using REST, the `dest_custom_records` map type can be set by appending
- // `&dest_custom_records[<record_number>]=<record_data_base64_url_encoded>`
- // to the URL. Unfortunately this map type doesn't appear in the REST API
- // documentation because of a bug in the grpc-gateway library.
+ //When using REST, the `dest_custom_records` map type can be set by appending
+ //`&dest_custom_records[<record_number>]=<record_data_base64_url_encoded>`
+ //to the URL. Unfortunately this map type doesn't appear in the REST API
+ //documentation because of a bug in the grpc-gateway library.
QueryRoutes(ctx context.Context, in *QueryRoutesRequest, opts ...grpc.CallOption) (*QueryRoutesResponse, error)
// lncli: `getnetworkinfo`
- // GetNetworkInfo returns some basic stats about the known channel graph from
- // the point of view of the node.
+ //GetNetworkInfo returns some basic stats about the known channel graph from
+ //the point of view of the node.
GetNetworkInfo(ctx context.Context, in *NetworkInfoRequest, opts ...grpc.CallOption) (*NetworkInfo, error)
// lncli: `stop`
- // StopDaemon will send a shutdown request to the interrupt handler, triggering
- // a graceful shutdown of the daemon.
+ //StopDaemon will send a shutdown request to the interrupt handler, triggering
+ //a graceful shutdown of the daemon.
StopDaemon(ctx context.Context, in *StopRequest, opts ...grpc.CallOption) (*StopResponse, error)
- // SubscribeChannelGraph launches a streaming RPC that allows the caller to
- // receive notifications upon any changes to the channel graph topology from
- // the point of view of the responding node. Events notified include: new
- // nodes coming online, nodes updating their authenticated attributes, new
- // channels being advertised, updates in the routing policy for a directional
- // channel edge, and when channels are closed on-chain.
+ //
+ //SubscribeChannelGraph launches a streaming RPC that allows the caller to
+ //receive notifications upon any changes to the channel graph topology from
+ //the point of view of the responding node. Events notified include: new
+ //nodes coming online, nodes updating their authenticated attributes, new
+ //channels being advertised, updates in the routing policy for a directional
+ //channel edge, and when channels are closed on-chain.
SubscribeChannelGraph(ctx context.Context, in *GraphTopologySubscription, opts ...grpc.CallOption) (Lightning_SubscribeChannelGraphClient, error)
// lncli: `debuglevel`
- // DebugLevel allows a caller to programmatically set the logging verbosity of
- // lnd. The logging can be targeted according to a coarse daemon-wide logging
- // level, or in a granular fashion to specify the logging for a target
- // sub-system.
+ //DebugLevel allows a caller to programmatically set the logging verbosity of
+ //lnd. The logging can be targeted according to a coarse daemon-wide logging
+ //level, or in a granular fashion to specify the logging for a target
+ //sub-system.
DebugLevel(ctx context.Context, in *DebugLevelRequest, opts ...grpc.CallOption) (*DebugLevelResponse, error)
// lncli: `feereport`
- // FeeReport allows the caller to obtain a report detailing the current fee
- // schedule enforced by the node globally for each channel.
+ //FeeReport allows the caller to obtain a report detailing the current fee
+ //schedule enforced by the node globally for each channel.
FeeReport(ctx context.Context, in *FeeReportRequest, opts ...grpc.CallOption) (*FeeReportResponse, error)
// lncli: `updatechanpolicy`
- // UpdateChannelPolicy allows the caller to update the fee schedule and
- // channel policies for all channels globally, or a particular channel.
+ //UpdateChannelPolicy allows the caller to update the fee schedule and
+ //channel policies for all channels globally, or a particular channel.
UpdateChannelPolicy(ctx context.Context, in *PolicyUpdateRequest, opts ...grpc.CallOption) (*PolicyUpdateResponse, error)
// lncli: `fwdinghistory`
- // ForwardingHistory allows the caller to query the htlcswitch for a record of
- // all HTLCs forwarded within the target time range, and integer offset
- // within that time range, for a maximum number of events. If no maximum number
- // of events is specified, up to 100 events will be returned. If no time-range
- // is specified, then events will be returned in the order that they occured.
+ //ForwardingHistory allows the caller to query the htlcswitch for a record of
+ //all HTLCs forwarded within the target time range, and integer offset
+ //within that time range, for a maximum number of events. If no maximum number
+ //of events is specified, up to 100 events will be returned. If no time-range
+ //is specified, then events will be returned in the order that they occured.
//
- // A list of forwarding events are returned. The size of each forwarding event
- // is 40 bytes, and the max message size able to be returned in gRPC is 4 MiB.
- // As a result each message can only contain 50k entries. Each response has
- // the index offset of the last entry. The index offset can be provided to the
- // request to allow the caller to skip a series of records.
+ //A list of forwarding events are returned. The size of each forwarding event
+ //is 40 bytes, and the max message size able to be returned in gRPC is 4 MiB.
+ //As a result each message can only contain 50k entries. Each response has
+ //the index offset of the last entry. The index offset can be provided to the
+ //request to allow the caller to skip a series of records.
ForwardingHistory(ctx context.Context, in *ForwardingHistoryRequest, opts ...grpc.CallOption) (*ForwardingHistoryResponse, error)
// lncli: `exportchanbackup`
- // ExportChannelBackup attempts to return an encrypted static channel backup
- // for the target channel identified by it channel point. The backup is
- // encrypted with a key generated from the aezeed seed of the user. The
- // returned backup can either be restored using the RestoreChannelBackup
- // method once lnd is running, or via the InitWallet and UnlockWallet methods
- // from the WalletUnlocker service.
+ //ExportChannelBackup attempts to return an encrypted static channel backup
+ //for the target channel identified by it channel point. The backup is
+ //encrypted with a key generated from the aezeed seed of the user. The
+ //returned backup can either be restored using the RestoreChannelBackup
+ //method once lnd is running, or via the InitWallet and UnlockWallet methods
+ //from the WalletUnlocker service.
ExportChannelBackup(ctx context.Context, in *ExportChannelBackupRequest, opts ...grpc.CallOption) (*ChannelBackup, error)
- // ExportAllChannelBackups returns static channel backups for all existing
- // channels known to lnd. A set of regular singular static channel backups for
- // each channel are returned. Additionally, a multi-channel backup is returned
- // as well, which contains a single encrypted blob containing the backups of
- // each channel.
+ //
+ //ExportAllChannelBackups returns static channel backups for all existing
+ //channels known to lnd. A set of regular singular static channel backups for
+ //each channel are returned. Additionally, a multi-channel backup is returned
+ //as well, which contains a single encrypted blob containing the backups of
+ //each channel.
ExportAllChannelBackups(ctx context.Context, in *ChanBackupExportRequest, opts ...grpc.CallOption) (*ChanBackupSnapshot, error)
// lncli: `verifychanbackup`
- // VerifyChanBackup allows a caller to verify the integrity of a channel backup
- // snapshot. This method will accept either a packed Single or a packed Multi.
- // Specifying both will result in an error.
+ //VerifyChanBackup allows a caller to verify the integrity of a channel backup
+ //snapshot. This method will accept either a packed Single or a packed Multi.
+ //Specifying both will result in an error.
VerifyChanBackup(ctx context.Context, in *ChanBackupSnapshot, opts ...grpc.CallOption) (*VerifyChanBackupResponse, error)
// lncli: `restorechanbackup`
- // RestoreChannelBackups accepts a set of singular channel backups, or a
- // single encrypted multi-chan backup and attempts to recover any funds
- // remaining within the channel. If we are able to unpack the backup, then the
- // new channel will be shown under listchannels, as well as pending channels.
+ //RestoreChannelBackups accepts a set of singular channel backups, or a
+ //single encrypted multi-chan backup and attempts to recover any funds
+ //remaining within the channel. If we are able to unpack the backup, then the
+ //new channel will be shown under listchannels, as well as pending channels.
RestoreChannelBackups(ctx context.Context, in *RestoreChanBackupRequest, opts ...grpc.CallOption) (*RestoreBackupResponse, error)
- // SubscribeChannelBackups allows a client to sub-subscribe to the most up to
- // date information concerning the state of all channel backups. Each time a
- // new channel is added, we return the new set of channels, along with a
- // multi-chan backup containing the backup info for all channels. Each time a
- // channel is closed, we send a new update, which contains new new chan back
- // ups, but the updated set of encrypted multi-chan backups with the closed
- // channel(s) removed.
+ //
+ //SubscribeChannelBackups allows a client to sub-subscribe to the most up to
+ //date information concerning the state of all channel backups. Each time a
+ //new channel is added, we return the new set of channels, along with a
+ //multi-chan backup containing the backup info for all channels. Each time a
+ //channel is closed, we send a new update, which contains new new chan back
+ //ups, but the updated set of encrypted multi-chan backups with the closed
+ //channel(s) removed.
SubscribeChannelBackups(ctx context.Context, in *ChannelBackupSubscription, opts ...grpc.CallOption) (Lightning_SubscribeChannelBackupsClient, error)
// lncli: `bakemacaroon`
- // BakeMacaroon allows the creation of a new macaroon with custom read and
- // write permissions. No first-party caveats are added since this can be done
- // offline.
+ //BakeMacaroon allows the creation of a new macaroon with custom read and
+ //write permissions. No first-party caveats are added since this can be done
+ //offline.
BakeMacaroon(ctx context.Context, in *BakeMacaroonRequest, opts ...grpc.CallOption) (*BakeMacaroonResponse, error)
// lncli: `listmacaroonids`
- // ListMacaroonIDs returns all root key IDs that are in use.
+ //ListMacaroonIDs returns all root key IDs that are in use.
ListMacaroonIDs(ctx context.Context, in *ListMacaroonIDsRequest, opts ...grpc.CallOption) (*ListMacaroonIDsResponse, error)
// lncli: `deletemacaroonid`
- // DeleteMacaroonID deletes the specified macaroon ID and invalidates all
- // macaroons derived from that ID.
+ //DeleteMacaroonID deletes the specified macaroon ID and invalidates all
+ //macaroons derived from that ID.
DeleteMacaroonID(ctx context.Context, in *DeleteMacaroonIDRequest, opts ...grpc.CallOption) (*DeleteMacaroonIDResponse, error)
// lncli: `listpermissions`
- // ListPermissions lists all RPC method URIs and their required macaroon
- // permissions to access them.
+ //ListPermissions lists all RPC method URIs and their required macaroon
+ //permissions to access them.
ListPermissions(ctx context.Context, in *ListPermissionsRequest, opts ...grpc.CallOption) (*ListPermissionsResponse, error)
- // CheckMacaroonPermissions checks whether the provided macaroon contains all
- // the provided permissions. If the macaroon is valid (e.g. all caveats are
- // satisfied), and all permissions provided in the request are met, then
- // this RPC returns true.
+ //
+ //CheckMacaroonPermissions checks whether the provided macaroon contains all
+ //the provided permissions. If the macaroon is valid (e.g. all caveats are
+ //satisfied), and all permissions provided in the request are met, then
+ //this RPC returns true.
CheckMacaroonPermissions(ctx context.Context, in *CheckMacPermRequest, opts ...grpc.CallOption) (*CheckMacPermResponse, error)
- // RegisterRPCMiddleware adds a new gRPC middleware to the interceptor chain. A
- // gRPC middleware is software component external to lnd that aims to add
- // additional business logic to lnd by observing/intercepting/validating
- // incoming gRPC client requests and (if needed) replacing/overwriting outgoing
- // messages before they're sent to the client. When registering the middleware
- // must identify itself and indicate what custom macaroon caveats it wants to
- // be responsible for. Only requests that contain a macaroon with that specific
- // custom caveat are then sent to the middleware for inspection. The other
- // option is to register for the read-only mode in which all requests/responses
- // are forwarded for interception to the middleware but the middleware is not
- // allowed to modify any responses. As a security measure, _no_ middleware can
- // modify responses for requests made with _unencumbered_ macaroons!
+ //
+ //RegisterRPCMiddleware adds a new gRPC middleware to the interceptor chain. A
+ //gRPC middleware is software component external to lnd that aims to add
+ //additional business logic to lnd by observing/intercepting/validating
+ //incoming gRPC client requests and (if needed) replacing/overwriting outgoing
+ //messages before they're sent to the client. When registering the middleware
+ //must identify itself and indicate what custom macaroon caveats it wants to
+ //be responsible for. Only requests that contain a macaroon with that specific
+ //custom caveat are then sent to the middleware for inspection. The other
+ //option is to register for the read-only mode in which all requests/responses
+ //are forwarded for interception to the middleware but the middleware is not
+ //allowed to modify any responses. As a security measure, _no_ middleware can
+ //modify responses for requests made with _unencumbered_ macaroons!
RegisterRPCMiddleware(ctx context.Context, opts ...grpc.CallOption) (Lightning_RegisterRPCMiddlewareClient, error)
// lncli: `sendcustom`
- // SendCustomMessage sends a custom peer message.
+ //SendCustomMessage sends a custom peer message.
SendCustomMessage(ctx context.Context, in *SendCustomMessageRequest, opts ...grpc.CallOption) (*SendCustomMessageResponse, error)
// lncli: `subscribecustom`
- // SubscribeCustomMessages subscribes to a stream of incoming custom peer
- // messages.
+ //SubscribeCustomMessages subscribes to a stream of incoming custom peer
+ //messages.
//
- // To include messages with type outside of the custom range (>= 32768) lnd
- // needs to be compiled with the `dev` build tag, and the message type to
- // override should be specified in lnd's experimental protocol configuration.
+ //To include messages with type outside of the custom range (>= 32768) lnd
+ //needs to be compiled with the `dev` build tag, and the message type to
+ //override should be specified in lnd's experimental protocol configuration.
SubscribeCustomMessages(ctx context.Context, in *SubscribeCustomMessagesRequest, opts ...grpc.CallOption) (Lightning_SubscribeCustomMessagesClient, error)
// lncli: `sendonion`
- // SendOnionMessage sends an onion message to a peer.
+ //SendOnionMessage sends an onion message to a peer.
SendOnionMessage(ctx context.Context, in *SendOnionMessageRequest, opts ...grpc.CallOption) (*SendOnionMessageResponse, error)
// lncli: `subscribeonion`
- // SubscribeOnionMessages subscribes to a stream of incoming onion messages.
+ //SubscribeOnionMessages subscribes to a stream of incoming onion messages.
SubscribeOnionMessages(ctx context.Context, in *SubscribeOnionMessagesRequest, opts ...grpc.CallOption) (Lightning_SubscribeOnionMessagesClient, error)
// lncli: `listaliases`
- // ListAliases returns the set of all aliases that have ever existed with
- // their confirmed SCID (if it exists) and/or the base SCID (in the case of
- // zero conf).
+ //ListAliases returns the set of all aliases that have ever existed with
+ //their confirmed SCID (if it exists) and/or the base SCID (in the case of
+ //zero conf).
ListAliases(ctx context.Context, in *ListAliasesRequest, opts ...grpc.CallOption) (*ListAliasesResponse, error)
- // LookupHtlcResolution retrieves a final htlc resolution from the database.
- // If the htlc has no final resolution yet, a NotFound grpc status code is
- // returned.
+ //
+ //LookupHtlcResolution retrieves a final htlc resolution from the database.
+ //If the htlc has no final resolution yet, a NotFound grpc status code is
+ //returned.
LookupHtlcResolution(ctx context.Context, in *LookupHtlcResolutionRequest, opts ...grpc.CallOption) (*LookupHtlcResolutionResponse, error)
}
@@ -1295,389 +1308,402 @@ func (c *lightningClient) LookupHtlcResolution(ctx context.Context, in *LookupHt
// for forward compatibility
type LightningServer interface {
// lncli: `walletbalance`
- // WalletBalance returns total unspent outputs(confirmed and unconfirmed), all
- // confirmed unspent outputs and all unconfirmed unspent outputs under control
- // of the wallet.
+ //WalletBalance returns total unspent outputs(confirmed and unconfirmed), all
+ //confirmed unspent outputs and all unconfirmed unspent outputs under control
+ //of the wallet.
WalletBalance(context.Context, *WalletBalanceRequest) (*WalletBalanceResponse, error)
// lncli: `channelbalance`
- // ChannelBalance returns a report on the total funds across all open channels,
- // categorized in local/remote, pending local/remote and unsettled local/remote
- // balances.
+ //ChannelBalance returns a report on the total funds across all open channels,
+ //categorized in local/remote, pending local/remote and unsettled local/remote
+ //balances.
ChannelBalance(context.Context, *ChannelBalanceRequest) (*ChannelBalanceResponse, error)
// lncli: `listchaintxns`
- // GetTransactions returns a list describing all the known transactions
- // relevant to the wallet.
+ //GetTransactions returns a list describing all the known transactions
+ //relevant to the wallet.
GetTransactions(context.Context, *GetTransactionsRequest) (*TransactionDetails, error)
// lncli: `estimatefee`
- // EstimateFee asks the chain backend to estimate the fee rate and total fees
- // for a transaction that pays to multiple specified outputs.
+ //EstimateFee asks the chain backend to estimate the fee rate and total fees
+ //for a transaction that pays to multiple specified outputs.
//
- // When using REST, the `AddrToAmount` map type can be set by appending
- // `&AddrToAmount[<address>]=<amount_to_send>` to the URL. Unfortunately this
- // map type doesn't appear in the REST API documentation because of a bug in
- // the grpc-gateway library.
+ //When using REST, the `AddrToAmount` map type can be set by appending
+ //`&AddrToAmount[<address>]=<amount_to_send>` to the URL. Unfortunately this
+ //map type doesn't appear in the REST API documentation because of a bug in
+ //the grpc-gateway library.
EstimateFee(context.Context, *EstimateFeeRequest) (*EstimateFeeResponse, error)
// lncli: `sendcoins`
- // SendCoins executes a request to send coins to a particular address. Unlike
- // SendMany, this RPC call only allows creating a single output at a time. If
- // neither target_conf, or sat_per_vbyte are set, then the internal wallet will
- // consult its fee model to determine a fee for the default confirmation
- // target.
+ //SendCoins executes a request to send coins to a particular address. Unlike
+ //SendMany, this RPC call only allows creating a single output at a time. If
+ //neither target_conf, or sat_per_vbyte are set, then the internal wallet will
+ //consult its fee model to determine a fee for the default confirmation
+ //target.
SendCoins(context.Context, *SendCoinsRequest) (*SendCoinsResponse, error)
// lncli: `listunspent`
- // Deprecated, use walletrpc.ListUnspent instead.
+ //Deprecated, use walletrpc.ListUnspent instead.
//
- // ListUnspent returns a list of all utxos spendable by the wallet with a
- // number of confirmations between the specified minimum and maximum.
+ //ListUnspent returns a list of all utxos spendable by the wallet with a
+ //number of confirmations between the specified minimum and maximum.
ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error)
- // SubscribeTransactions creates a uni-directional stream from the server to
- // the client in which any newly discovered transactions relevant to the
- // wallet are sent over.
+ //
+ //SubscribeTransactions creates a uni-directional stream from the server to
+ //the client in which any newly discovered transactions relevant to the
+ //wallet are sent over.
SubscribeTransactions(*GetTransactionsRequest, Lightning_SubscribeTransactionsServer) error
// lncli: `sendmany`
- // SendMany handles a request for a transaction that creates multiple specified
- // outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
- // the internal wallet will consult its fee model to determine a fee for the
- // default confirmation target.
+ //SendMany handles a request for a transaction that creates multiple specified
+ //outputs in parallel. If neither target_conf, or sat_per_vbyte are set, then
+ //the internal wallet will consult its fee model to determine a fee for the
+ //default confirmation target.
SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error)
// lncli: `newaddress`
- // NewAddress creates a new address under control of the local wallet.
+ //NewAddress creates a new address under control of the local wallet.
NewAddress(context.Context, *NewAddressRequest) (*NewAddressResponse, error)
// lncli: `signmessage`
- // SignMessage signs a message with this node's private key. The returned
- // signature string is `zbase32` encoded and pubkey recoverable, meaning that
- // only the message digest and signature are needed for verification.
+ //SignMessage signs a message with this node's private key. The returned
+ //signature string is `zbase32` encoded and pubkey recoverable, meaning that
+ //only the message digest and signature are needed for verification.
SignMessage(context.Context, *SignMessageRequest) (*SignMessageResponse, error)
// lncli: `verifymessage`
- // VerifyMessage verifies a signature over a message and recovers the signer's
- // public key. The signature is only deemed valid if the recovered public key
- // corresponds to a node key in the public Lightning network. The signature
- // must be zbase32 encoded and signed by an active node in the resident node's
- // channel database. In addition to returning the validity of the signature,
- // VerifyMessage also returns the recovered pubkey from the signature.
+ //VerifyMessage verifies a signature over a message and recovers the signer's
+ //public key. The signature is only deemed valid if the recovered public key
+ //corresponds to a node key in the public Lightning network. The signature
+ //must be zbase32 encoded and signed by an active node in the resident node's
+ //channel database. In addition to returning the validity of the signature,
+ //VerifyMessage also returns the recovered pubkey from the signature.
VerifyMessage(context.Context, *VerifyMessageRequest) (*VerifyMessageResponse, error)
// lncli: `connect`
- // ConnectPeer attempts to establish a connection to a remote peer. This is at
- // the networking level, and is used for communication between nodes. This is
- // distinct from establishing a channel with a peer.
+ //ConnectPeer attempts to establish a connection to a remote peer. This is at
+ //the networking level, and is used for communication between nodes. This is
+ //distinct from establishing a channel with a peer.
ConnectPeer(context.Context, *ConnectPeerRequest) (*ConnectPeerResponse, error)
// lncli: `disconnect`
- // DisconnectPeer attempts to disconnect one peer from another identified by a
- // given pubKey. In the case that we currently have a pending or active channel
- // with the target peer, then this action will be not be allowed.
+ //DisconnectPeer attempts to disconnect one peer from another identified by a
+ //given pubKey. In the case that we currently have a pending or active channel
+ //with the target peer, then this action will be not be allowed.
DisconnectPeer(context.Context, *DisconnectPeerRequest) (*DisconnectPeerResponse, error)
// lncli: `listpeers`
- // ListPeers returns a verbose listing of all currently active peers.
+ //ListPeers returns a verbose listing of all currently active peers.
ListPeers(context.Context, *ListPeersRequest) (*ListPeersResponse, error)
- // SubscribePeerEvents creates a uni-directional stream from the server to
- // the client in which any events relevant to the state of peers are sent
- // over. Events include peers going online and offline.
+ //
+ //SubscribePeerEvents creates a uni-directional stream from the server to
+ //the client in which any events relevant to the state of peers are sent
+ //over. Events include peers going online and offline.
SubscribePeerEvents(*PeerEventSubscription, Lightning_SubscribePeerEventsServer) error
// lncli: `getinfo`
- // GetInfo returns general information concerning the lightning node including
- // it's identity pubkey, alias, the chains it is connected to, and information
- // concerning the number of open+pending channels.
+ //GetInfo returns general information concerning the lightning node including
+ //it's identity pubkey, alias, the chains it is connected to, and information
+ //concerning the number of open+pending channels.
GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error)
// lncli: 'getdebuginfo'
- // GetDebugInfo returns debug information concerning the state of the daemon
- // and its subsystems. This includes the full configuration and the latest log
- // entries from the log file.
+ //GetDebugInfo returns debug information concerning the state of the daemon
+ //and its subsystems. This includes the full configuration and the latest log
+ //entries from the log file.
GetDebugInfo(context.Context, *GetDebugInfoRequest) (*GetDebugInfoResponse, error)
- // * lncli: `getrecoveryinfo`
- // GetRecoveryInfo returns information concerning the recovery mode including
- // whether it's in a recovery mode, whether the recovery is finished, and the
- // progress made so far.
+ //* lncli: `getrecoveryinfo`
+ //GetRecoveryInfo returns information concerning the recovery mode including
+ //whether it's in a recovery mode, whether the recovery is finished, and the
+ //progress made so far.
GetRecoveryInfo(context.Context, *GetRecoveryInfoRequest) (*GetRecoveryInfoResponse, error)
// lncli: `pendingchannels`
- // PendingChannels returns a list of all the channels that are currently
- // considered "pending". A channel is pending if it has finished the funding
- // workflow and is waiting for confirmations for the funding txn, or is in the
- // process of closure, either initiated cooperatively or non-cooperatively.
+ //PendingChannels returns a list of all the channels that are currently
+ //considered "pending". A channel is pending if it has finished the funding
+ //workflow and is waiting for confirmations for the funding txn, or is in the
+ //process of closure, either initiated cooperatively or non-cooperatively.
PendingChannels(context.Context, *PendingChannelsRequest) (*PendingChannelsResponse, error)
// lncli: `listchannels`
- // ListChannels returns a description of all the open channels that this node
- // is a participant in.
+ //ListChannels returns a description of all the open channels that this node
+ //is a participant in.
ListChannels(context.Context, *ListChannelsRequest) (*ListChannelsResponse, error)
- // SubscribeChannelEvents creates a uni-directional stream from the server to
- // the client in which any updates relevant to the state of the channels are
- // sent over. Events include new active channels, inactive channels, and closed
- // channels.
+ //
+ //SubscribeChannelEvents creates a uni-directional stream from the server to
+ //the client in which any updates relevant to the state of the channels are
+ //sent over. Events include new active channels, inactive channels, and closed
+ //channels.
SubscribeChannelEvents(*ChannelEventSubscription, Lightning_SubscribeChannelEventsServer) error
// lncli: `closedchannels`
- // ClosedChannels returns a description of all the closed channels that
- // this node was a participant in.
+ //ClosedChannels returns a description of all the closed channels that
+ //this node was a participant in.
ClosedChannels(context.Context, *ClosedChannelsRequest) (*ClosedChannelsResponse, error)
- // OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
- // call is meant to be consumed by clients to the REST proxy. As with all
- // other sync calls, all byte slices are intended to be populated as hex
- // encoded strings.
+ //
+ //OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
+ //call is meant to be consumed by clients to the REST proxy. As with all
+ //other sync calls, all byte slices are intended to be populated as hex
+ //encoded strings.
OpenChannelSync(context.Context, *OpenChannelRequest) (*ChannelPoint, error)
// lncli: `openchannel`
- // OpenChannel attempts to open a singly funded channel specified in the
- // request to a remote peer. Users are able to specify a target number of
- // blocks that the funding transaction should be confirmed in, or a manual fee
- // rate to us for the funding transaction. If neither are specified, then a
- // lax block confirmation target is used. Each OpenStatusUpdate will return
- // the pending channel ID of the in-progress channel. Depending on the
- // arguments specified in the OpenChannelRequest, this pending channel ID can
- // then be used to manually progress the channel funding flow.
+ //OpenChannel attempts to open a singly funded channel specified in the
+ //request to a remote peer. Users are able to specify a target number of
+ //blocks that the funding transaction should be confirmed in, or a manual fee
+ //rate to us for the funding transaction. If neither are specified, then a
+ //lax block confirmation target is used. Each OpenStatusUpdate will return
+ //the pending channel ID of the in-progress channel. Depending on the
+ //arguments specified in the OpenChannelRequest, this pending channel ID can
+ //then be used to manually progress the channel funding flow.
OpenChannel(*OpenChannelRequest, Lightning_OpenChannelServer) error
// lncli: `batchopenchannel`
- // BatchOpenChannel attempts to open multiple single-funded channels in a
- // single transaction in an atomic way. This means either all channel open
- // requests succeed at once or all attempts are aborted if any of them fail.
- // This is the safer variant of using PSBTs to manually fund a batch of
- // channels through the OpenChannel RPC.
+ //BatchOpenChannel attempts to open multiple single-funded channels in a
+ //single transaction in an atomic way. This means either all channel open
+ //requests succeed at once or all attempts are aborted if any of them fail.
+ //This is the safer variant of using PSBTs to manually fund a batch of
+ //channels through the OpenChannel RPC.
BatchOpenChannel(context.Context, *BatchOpenChannelRequest) (*BatchOpenChannelResponse, error)
- // FundingStateStep is an advanced funding related call that allows the caller
- // to either execute some preparatory steps for a funding workflow, or
- // manually progress a funding workflow. The primary way a funding flow is
- // identified is via its pending channel ID. As an example, this method can be
- // used to specify that we're expecting a funding flow for a particular
- // pending channel ID, for which we need to use specific parameters.
- // Alternatively, this can be used to interactively drive PSBT signing for
- // funding for partially complete funding transactions.
+ //
+ //FundingStateStep is an advanced funding related call that allows the caller
+ //to either execute some preparatory steps for a funding workflow, or
+ //manually progress a funding workflow. The primary way a funding flow is
+ //identified is via its pending channel ID. As an example, this method can be
+ //used to specify that we're expecting a funding flow for a particular
+ //pending channel ID, for which we need to use specific parameters.
+ //Alternatively, this can be used to interactively drive PSBT signing for
+ //funding for partially complete funding transactions.
FundingStateStep(context.Context, *FundingTransitionMsg) (*FundingStateStepResp, error)
- // ChannelAcceptor dispatches a bi-directional streaming RPC in which
- // OpenChannel requests are sent to the client and the client responds with
- // a boolean that tells LND whether or not to accept the channel. This allows
- // node operators to specify their own criteria for accepting inbound channels
- // through a single persistent connection.
+ //
+ //ChannelAcceptor dispatches a bi-directional streaming RPC in which
+ //OpenChannel requests are sent to the client and the client responds with
+ //a boolean that tells LND whether or not to accept the channel. This allows
+ //node operators to specify their own criteria for accepting inbound channels
+ //through a single persistent connection.
ChannelAcceptor(Lightning_ChannelAcceptorServer) error
// lncli: `closechannel`
- // CloseChannel attempts to close an active channel identified by its channel
- // outpoint (ChannelPoint). The actions of this method can additionally be
- // augmented to attempt a force close after a timeout period in the case of an
- // inactive peer. If a non-force close (cooperative closure) is requested,
- // then the user can specify either a target number of blocks until the
- // closure transaction is confirmed, or a manual fee rate. If neither are
- // specified, then a default lax, block confirmation target is used.
+ //CloseChannel attempts to close an active channel identified by its channel
+ //outpoint (ChannelPoint). The actions of this method can additionally be
+ //augmented to attempt a force close after a timeout period in the case of an
+ //inactive peer. If a non-force close (cooperative closure) is requested,
+ //then the user can specify either a target number of blocks until the
+ //closure transaction is confirmed, or a manual fee rate. If neither are
+ //specified, then a default lax, block confirmation target is used.
CloseChannel(*CloseChannelRequest, Lightning_CloseChannelServer) error
// lncli: `abandonchannel`
- // AbandonChannel removes all channel state from the database except for a
- // close summary. This method can be used to get rid of permanently unusable
- // channels due to bugs fixed in newer versions of lnd. This method can also be
- // used to remove externally funded channels where the funding transaction was
- // never broadcast. Only available for non-externally funded channels in dev
- // build.
+ //AbandonChannel removes all channel state from the database except for a
+ //close summary. This method can be used to get rid of permanently unusable
+ //channels due to bugs fixed in newer versions of lnd. This method can also be
+ //used to remove externally funded channels where the funding transaction was
+ //never broadcast. Only available for non-externally funded channels in dev
+ //build.
AbandonChannel(context.Context, *AbandonChannelRequest) (*AbandonChannelResponse, error)
// lncli: `addinvoice`
- // AddInvoice attempts to add a new invoice to the invoice database. Any
- // duplicated invoices are rejected, therefore all invoices *must* have a
- // unique payment preimage.
+ //AddInvoice attempts to add a new invoice to the invoice database. Any
+ //duplicated invoices are rejected, therefore all invoices *must* have a
+ //unique payment preimage.
AddInvoice(context.Context, *Invoice) (*AddInvoiceResponse, error)
// lncli: `listinvoices`
- // ListInvoices returns a list of all the invoices currently stored within the
- // database. Any active debug invoices are ignored. It has full support for
- // paginated responses, allowing users to query for specific invoices through
- // their add_index. This can be done by using either the first_index_offset or
- // last_index_offset fields included in the response as the index_offset of the
- // next request. By default, the first 100 invoices created will be returned.
- // Backwards pagination is also supported through the Reversed flag.
+ //ListInvoices returns a list of all the invoices currently stored within the
+ //database. Any active debug invoices are ignored. It has full support for
+ //paginated responses, allowing users to query for specific invoices through
+ //their add_index. This can be done by using either the first_index_offset or
+ //last_index_offset fields included in the response as the index_offset of the
+ //next request. By default, the first 100 invoices created will be returned.
+ //Backwards pagination is also supported through the Reversed flag.
ListInvoices(context.Context, *ListInvoiceRequest) (*ListInvoiceResponse, error)
// lncli: `lookupinvoice`
- // LookupInvoice attempts to look up an invoice according to its payment hash.
- // The passed payment hash *must* be exactly 32 bytes, if not, an error is
- // returned.
+ //LookupInvoice attempts to look up an invoice according to its payment hash.
+ //The passed payment hash *must* be exactly 32 bytes, if not, an error is
+ //returned.
LookupInvoice(context.Context, *PaymentHash) (*Invoice, error)
- // SubscribeInvoices returns a uni-directional stream (server -> client) for
- // notifying the client of newly added/settled invoices. The caller can
- // optionally specify the add_index and/or the settle_index. If the add_index
- // is specified, then we'll first start by sending add invoice events for all
- // invoices with an add_index greater than the specified value. If the
- // settle_index is specified, then next, we'll send out all settle events for
- // invoices with a settle_index greater than the specified value. One or both
- // of these fields can be set. If no fields are set, then we'll only send out
- // the latest add/settle events.
+ //
+ //SubscribeInvoices returns a uni-directional stream (server -> client) for
+ //notifying the client of newly added/settled invoices. The caller can
+ //optionally specify the add_index and/or the settle_index. If the add_index
+ //is specified, then we'll first start by sending add invoice events for all
+ //invoices with an add_index greater than the specified value. If the
+ //settle_index is specified, then next, we'll send out all settle events for
+ //invoices with a settle_index greater than the specified value. One or both
+ //of these fields can be set. If no fields are set, then we'll only send out
+ //the latest add/settle events.
SubscribeInvoices(*InvoiceSubscription, Lightning_SubscribeInvoicesServer) error
// lncli: `deletecanceledinvoice`
- // DeleteCanceledInvoice removes a canceled invoice from the database. If the
- // invoice is not in the canceled state, an error will be returned.
+ //DeleteCanceledInvoice removes a canceled invoice from the database. If the
+ //invoice is not in the canceled state, an error will be returned.
DeleteCanceledInvoice(context.Context, *DelCanceledInvoiceReq) (*DelCanceledInvoiceResp, error)
// lncli: `decodepayreq`
- // DecodePayReq takes an encoded payment request string and attempts to decode
- // it, returning a full description of the conditions encoded within the
- // payment request.
+ //DecodePayReq takes an encoded payment request string and attempts to decode
+ //it, returning a full description of the conditions encoded within the
+ //payment request.
DecodePayReq(context.Context, *PayReqString) (*PayReq, error)
// lncli: `listpayments`
- // ListPayments returns a list of all outgoing payments.
+ //ListPayments returns a list of all outgoing payments.
ListPayments(context.Context, *ListPaymentsRequest) (*ListPaymentsResponse, error)
// lncli: `deletepayments`
- // DeletePayment deletes an outgoing payment from DB. Note that it will not
- // attempt to delete an In-Flight payment, since that would be unsafe.
+ //DeletePayment deletes an outgoing payment from DB. Note that it will not
+ //attempt to delete an In-Flight payment, since that would be unsafe.
DeletePayment(context.Context, *DeletePaymentRequest) (*DeletePaymentResponse, error)
// lncli: `deletepayments --all`
- // DeleteAllPayments deletes all outgoing payments from DB. Note that it will
- // not attempt to delete In-Flight payments, since that would be unsafe.
+ //DeleteAllPayments deletes all outgoing payments from DB. Note that it will
+ //not attempt to delete In-Flight payments, since that would be unsafe.
DeleteAllPayments(context.Context, *DeleteAllPaymentsRequest) (*DeleteAllPaymentsResponse, error)
// lncli: `describegraph`
- // DescribeGraph returns a description of the latest graph state from the
- // point of view of the node. The graph information is partitioned into two
- // components: all the nodes/vertexes, and all the edges that connect the
- // vertexes themselves. As this is a directed graph, the edges also contain
- // the node directional specific routing policy which includes: the time lock
- // delta, fee information, etc.
+ //DescribeGraph returns a description of the latest graph state from the
+ //point of view of the node. The graph information is partitioned into two
+ //components: all the nodes/vertexes, and all the edges that connect the
+ //vertexes themselves. As this is a directed graph, the edges also contain
+ //the node directional specific routing policy which includes: the time lock
+ //delta, fee information, etc.
DescribeGraph(context.Context, *ChannelGraphRequest) (*ChannelGraph, error)
// lncli: `getnodemetrics`
- // GetNodeMetrics returns node metrics calculated from the graph. Currently
- // the only supported metric is betweenness centrality of individual nodes.
+ //GetNodeMetrics returns node metrics calculated from the graph. Currently
+ //the only supported metric is betweenness centrality of individual nodes.
GetNodeMetrics(context.Context, *NodeMetricsRequest) (*NodeMetricsResponse, error)
// lncli: `getchaninfo`
- // GetChanInfo returns the latest authenticated network announcement for the
- // given channel identified by its channel ID: an 8-byte integer which
- // uniquely identifies the location of transaction's funding output within the
- // blockchain.
+ //GetChanInfo returns the latest authenticated network announcement for the
+ //given channel identified by its channel ID: an 8-byte integer which
+ //uniquely identifies the location of transaction's funding output within the
+ //blockchain.
GetChanInfo(context.Context, *ChanInfoRequest) (*ChannelEdge, error)
// lncli: `getnodeinfo`
- // GetNodeInfo returns the latest advertised, aggregated, and authenticated
- // channel information for the specified node identified by its public key.
+ //GetNodeInfo returns the latest advertised, aggregated, and authenticated
+ //channel information for the specified node identified by its public key.
GetNodeInfo(context.Context, *NodeInfoRequest) (*NodeInfo, error)
// lncli: `queryroutes`
- // QueryRoutes attempts to query the daemon's Channel Router for a possible
- // route to a target destination capable of carrying a specific amount of
- // satoshis. The returned route contains the full details required to craft and
- // send an HTLC, also including the necessary information that should be
- // present within the Sphinx packet encapsulated within the HTLC.
+ //QueryRoutes attempts to query the daemon's Channel Router for a possible
+ //route to a target destination capable of carrying a specific amount of
+ //satoshis. The returned route contains the full details required to craft and
+ //send an HTLC, also including the necessary information that should be
+ //present within the Sphinx packet encapsulated within the HTLC.
//
- // When using REST, the `dest_custom_records` map type can be set by appending
- // `&dest_custom_records[<record_number>]=<record_data_base64_url_encoded>`
- // to the URL. Unfortunately this map type doesn't appear in the REST API
- // documentation because of a bug in the grpc-gateway library.
+ //When using REST, the `dest_custom_records` map type can be set by appending
+ //`&dest_custom_records[<record_number>]=<record_data_base64_url_encoded>`
+ //to the URL. Unfortunately this map type doesn't appear in the REST API
+ //documentation because of a bug in the grpc-gateway library.
QueryRoutes(context.Context, *QueryRoutesRequest) (*QueryRoutesResponse, error)
// lncli: `getnetworkinfo`
- // GetNetworkInfo returns some basic stats about the known channel graph from
- // the point of view of the node.
+ //GetNetworkInfo returns some basic stats about the known channel graph from
+ //the point of view of the node.
GetNetworkInfo(context.Context, *NetworkInfoRequest) (*NetworkInfo, error)
// lncli: `stop`
- // StopDaemon will send a shutdown request to the interrupt handler, triggering
- // a graceful shutdown of the daemon.
+ //StopDaemon will send a shutdown request to the interrupt handler, triggering
+ //a graceful shutdown of the daemon.
StopDaemon(context.Context, *StopRequest) (*StopResponse, error)
- // SubscribeChannelGraph launches a streaming RPC that allows the caller to
- // receive notifications upon any changes to the channel graph topology from
- // the point of view of the responding node. Events notified include: new
- // nodes coming online, nodes updating their authenticated attributes, new
- // channels being advertised, updates in the routing policy for a directional
- // channel edge, and when channels are closed on-chain.
+ //
+ //SubscribeChannelGraph launches a streaming RPC that allows the caller to
+ //receive notifications upon any changes to the channel graph topology from
+ //the point of view of the responding node. Events notified include: new
+ //nodes coming online, nodes updating their authenticated attributes, new
+ //channels being advertised, updates in the routing policy for a directional
+ //channel edge, and when channels are closed on-chain.
SubscribeChannelGraph(*GraphTopologySubscription, Lightning_SubscribeChannelGraphServer) error
// lncli: `debuglevel`
- // DebugLevel allows a caller to programmatically set the logging verbosity of
- // lnd. The logging can be targeted according to a coarse daemon-wide logging
- // level, or in a granular fashion to specify the logging for a target
- // sub-system.
+ //DebugLevel allows a caller to programmatically set the logging verbosity of
+ //lnd. The logging can be targeted according to a coarse daemon-wide logging
+ //level, or in a granular fashion to specify the logging for a target
+ //sub-system.
DebugLevel(context.Context, *DebugLevelRequest) (*DebugLevelResponse, error)
// lncli: `feereport`
- // FeeReport allows the caller to obtain a report detailing the current fee
- // schedule enforced by the node globally for each channel.
+ //FeeReport allows the caller to obtain a report detailing the current fee
+ //schedule enforced by the node globally for each channel.
FeeReport(context.Context, *FeeReportRequest) (*FeeReportResponse, error)
// lncli: `updatechanpolicy`
- // UpdateChannelPolicy allows the caller to update the fee schedule and
- // channel policies for all channels globally, or a particular channel.
+ //UpdateChannelPolicy allows the caller to update the fee schedule and
+ //channel policies for all channels globally, or a particular channel.
UpdateChannelPolicy(context.Context, *PolicyUpdateRequest) (*PolicyUpdateResponse, error)
// lncli: `fwdinghistory`
- // ForwardingHistory allows the caller to query the htlcswitch for a record of
- // all HTLCs forwarded within the target time range, and integer offset
- // within that time range, for a maximum number of events. If no maximum number
- // of events is specified, up to 100 events will be returned. If no time-range
- // is specified, then events will be returned in the order that they occured.
+ //ForwardingHistory allows the caller to query the htlcswitch for a record of
+ //all HTLCs forwarded within the target time range, and integer offset
+ //within that time range, for a maximum number of events. If no maximum number
+ //of events is specified, up to 100 events will be returned. If no time-range
+ //is specified, then events will be returned in the order that they occured.
//
- // A list of forwarding events are returned. The size of each forwarding event
- // is 40 bytes, and the max message size able to be returned in gRPC is 4 MiB.
- // As a result each message can only contain 50k entries. Each response has
- // the index offset of the last entry. The index offset can be provided to the
- // request to allow the caller to skip a series of records.
+ //A list of forwarding events are returned. The size of each forwarding event
+ //is 40 bytes, and the max message size able to be returned in gRPC is 4 MiB.
+ //As a result each message can only contain 50k entries. Each response has
+ //the index offset of the last entry. The index offset can be provided to the
+ //request to allow the caller to skip a series of records.
ForwardingHistory(context.Context, *ForwardingHistoryRequest) (*ForwardingHistoryResponse, error)
// lncli: `exportchanbackup`
- // ExportChannelBackup attempts to return an encrypted static channel backup
- // for the target channel identified by it channel point. The backup is
- // encrypted with a key generated from the aezeed seed of the user. The
- // returned backup can either be restored using the RestoreChannelBackup
- // method once lnd is running, or via the InitWallet and UnlockWallet methods
- // from the WalletUnlocker service.
+ //ExportChannelBackup attempts to return an encrypted static channel backup
+ //for the target channel identified by it channel point. The backup is
+ //encrypted with a key generated from the aezeed seed of the user. The
+ //returned backup can either be restored using the RestoreChannelBackup
+ //method once lnd is running, or via the InitWallet and UnlockWallet methods
+ //from the WalletUnlocker service.
ExportChannelBackup(context.Context, *ExportChannelBackupRequest) (*ChannelBackup, error)
- // ExportAllChannelBackups returns static channel backups for all existing
- // channels known to lnd. A set of regular singular static channel backups for
- // each channel are returned. Additionally, a multi-channel backup is returned
- // as well, which contains a single encrypted blob containing the backups of
- // each channel.
+ //
+ //ExportAllChannelBackups returns static channel backups for all existing
+ //channels known to lnd. A set of regular singular static channel backups for
+ //each channel are returned. Additionally, a multi-channel backup is returned
+ //as well, which contains a single encrypted blob containing the backups of
+ //each channel.
ExportAllChannelBackups(context.Context, *ChanBackupExportRequest) (*ChanBackupSnapshot, error)
// lncli: `verifychanbackup`
- // VerifyChanBackup allows a caller to verify the integrity of a channel backup
- // snapshot. This method will accept either a packed Single or a packed Multi.
- // Specifying both will result in an error.
+ //VerifyChanBackup allows a caller to verify the integrity of a channel backup
+ //snapshot. This method will accept either a packed Single or a packed Multi.
+ //Specifying both will result in an error.
VerifyChanBackup(context.Context, *ChanBackupSnapshot) (*VerifyChanBackupResponse, error)
// lncli: `restorechanbackup`
- // RestoreChannelBackups accepts a set of singular channel backups, or a
- // single encrypted multi-chan backup and attempts to recover any funds
- // remaining within the channel. If we are able to unpack the backup, then the
- // new channel will be shown under listchannels, as well as pending channels.
+ //RestoreChannelBackups accepts a set of singular channel backups, or a
+ //single encrypted multi-chan backup and attempts to recover any funds
+ //remaining within the channel. If we are able to unpack the backup, then the
+ //new channel will be shown under listchannels, as well as pending channels.
RestoreChannelBackups(context.Context, *RestoreChanBackupRequest) (*RestoreBackupResponse, error)
- // SubscribeChannelBackups allows a client to sub-subscribe to the most up to
- // date information concerning the state of all channel backups. Each time a
- // new channel is added, we return the new set of channels, along with a
- // multi-chan backup containing the backup info for all channels. Each time a
- // channel is closed, we send a new update, which contains new new chan back
- // ups, but the updated set of encrypted multi-chan backups with the closed
- // channel(s) removed.
+ //
+ //SubscribeChannelBackups allows a client to sub-subscribe to the most up to
+ //date information concerning the state of all channel backups. Each time a
+ //new channel is added, we return the new set of channels, along with a
+ //multi-chan backup containing the backup info for all channels. Each time a
+ //channel is closed, we send a new update, which contains new new chan back
+ //ups, but the updated set of encrypted multi-chan backups with the closed
+ //channel(s) removed.
SubscribeChannelBackups(*ChannelBackupSubscription, Lightning_SubscribeChannelBackupsServer) error
// lncli: `bakemacaroon`
- // BakeMacaroon allows the creation of a new macaroon with custom read and
- // write permissions. No first-party caveats are added since this can be done
- // offline.
+ //BakeMacaroon allows the creation of a new macaroon with custom read and
+ //write permissions. No first-party caveats are added since this can be done
+ //offline.
BakeMacaroon(context.Context, *BakeMacaroonRequest) (*BakeMacaroonResponse, error)
// lncli: `listmacaroonids`
- // ListMacaroonIDs returns all root key IDs that are in use.
+ //ListMacaroonIDs returns all root key IDs that are in use.
ListMacaroonIDs(context.Context, *ListMacaroonIDsRequest) (*ListMacaroonIDsResponse, error)
// lncli: `deletemacaroonid`
- // DeleteMacaroonID deletes the specified macaroon ID and invalidates all
- // macaroons derived from that ID.
+ //DeleteMacaroonID deletes the specified macaroon ID and invalidates all
+ //macaroons derived from that ID.
DeleteMacaroonID(context.Context, *DeleteMacaroonIDRequest) (*DeleteMacaroonIDResponse, error)
// lncli: `listpermissions`
- // ListPermissions lists all RPC method URIs and their required macaroon
- // permissions to access them.
+ //ListPermissions lists all RPC method URIs and their required macaroon
+ //permissions to access them.
ListPermissions(context.Context, *ListPermissionsRequest) (*ListPermissionsResponse, error)
- // CheckMacaroonPermissions checks whether the provided macaroon contains all
- // the provided permissions. If the macaroon is valid (e.g. all caveats are
- // satisfied), and all permissions provided in the request are met, then
- // this RPC returns true.
+ //
+ //CheckMacaroonPermissions checks whether the provided macaroon contains all
+ //the provided permissions. If the macaroon is valid (e.g. all caveats are
+ //satisfied), and all permissions provided in the request are met, then
+ //this RPC returns true.
CheckMacaroonPermissions(context.Context, *CheckMacPermRequest) (*CheckMacPermResponse, error)
- // RegisterRPCMiddleware adds a new gRPC middleware to the interceptor chain. A
- // gRPC middleware is software component external to lnd that aims to add
- // additional business logic to lnd by observing/intercepting/validating
- // incoming gRPC client requests and (if needed) replacing/overwriting outgoing
- // messages before they're sent to the client. When registering the middleware
- // must identify itself and indicate what custom macaroon caveats it wants to
- // be responsible for. Only requests that contain a macaroon with that specific
- // custom caveat are then sent to the middleware for inspection. The other
- // option is to register for the read-only mode in which all requests/responses
- // are forwarded for interception to the middleware but the middleware is not
- // allowed to modify any responses. As a security measure, _no_ middleware can
- // modify responses for requests made with _unencumbered_ macaroons!
+ //
+ //RegisterRPCMiddleware adds a new gRPC middleware to the interceptor chain. A
+ //gRPC middleware is software component external to lnd that aims to add
+ //additional business logic to lnd by observing/intercepting/validating
+ //incoming gRPC client requests and (if needed) replacing/overwriting outgoing
+ //messages before they're sent to the client. When registering the middleware
+ //must identify itself and indicate what custom macaroon caveats it wants to
+ //be responsible for. Only requests that contain a macaroon with that specific
+ //custom caveat are then sent to the middleware for inspection. The other
+ //option is to register for the read-only mode in which all requests/responses
+ //are forwarded for interception to the middleware but the middleware is not
+ //allowed to modify any responses. As a security measure, _no_ middleware can
+ //modify responses for requests made with _unencumbered_ macaroons!
RegisterRPCMiddleware(Lightning_RegisterRPCMiddlewareServer) error
// lncli: `sendcustom`
- // SendCustomMessage sends a custom peer message.
+ //SendCustomMessage sends a custom peer message.
SendCustomMessage(context.Context, *SendCustomMessageRequest) (*SendCustomMessageResponse, error)
// lncli: `subscribecustom`
- // SubscribeCustomMessages subscribes to a stream of incoming custom peer
- // messages.
+ //SubscribeCustomMessages subscribes to a stream of incoming custom peer
+ //messages.
//
- // To include messages with type outside of the custom range (>= 32768) lnd
- // needs to be compiled with the `dev` build tag, and the message type to
- // override should be specified in lnd's experimental protocol configuration.
+ //To include messages with type outside of the custom range (>= 32768) lnd
+ //needs to be compiled with the `dev` build tag, and the message type to
+ //override should be specified in lnd's experimental protocol configuration.
SubscribeCustomMessages(*SubscribeCustomMessagesRequest, Lightning_SubscribeCustomMessagesServer) error
// lncli: `sendonion`
- // SendOnionMessage sends an onion message to a peer.
+ //SendOnionMessage sends an onion message to a peer.
SendOnionMessage(context.Context, *SendOnionMessageRequest) (*SendOnionMessageResponse, error)
// lncli: `subscribeonion`
- // SubscribeOnionMessages subscribes to a stream of incoming onion messages.
+ //SubscribeOnionMessages subscribes to a stream of incoming onion messages.
SubscribeOnionMessages(*SubscribeOnionMessagesRequest, Lightning_SubscribeOnionMessagesServer) error
// lncli: `listaliases`
- // ListAliases returns the set of all aliases that have ever existed with
- // their confirmed SCID (if it exists) and/or the base SCID (in the case of
- // zero conf).
+ //ListAliases returns the set of all aliases that have ever existed with
+ //their confirmed SCID (if it exists) and/or the base SCID (in the case of
+ //zero conf).
ListAliases(context.Context, *ListAliasesRequest) (*ListAliasesResponse, error)
- // LookupHtlcResolution retrieves a final htlc resolution from the database.
- // If the htlc has no final resolution yet, a NotFound grpc status code is
- // returned.
+ //
+ //LookupHtlcResolution retrieves a final htlc resolution from the database.
+ //If the htlc has no final resolution yet, a NotFound grpc status code is
+ //returned.
LookupHtlcResolution(context.Context, *LookupHtlcResolutionRequest) (*LookupHtlcResolutionResponse, error)
mustEmbedUnimplementedLightningServer()
}
### lnrpc/neutrinorpc/neutrino_grpc.pb.go
@@ -19,33 +19,34 @@ 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.
type NeutrinoKitClient interface {
// lncli: `neutrino status`
- // Status returns the status of the light client neutrino instance,
- // along with height and hash of the best block, and a list of connected
- // peers.
+ //Status returns the status of the light client neutrino instance,
+ //along with height and hash of the best block, and a list of connected
+ //peers.
Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error)
// lncli: `neutrino addpeer`
- // 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)
// lncli: `neutrino disconnectpeer`
- // DisconnectPeer disconnects a peer by target address. Both outbound and
- // inbound nodes will be searched for the target node. An error message will
- // be returned if the peer was not found.
+ //DisconnectPeer disconnects a peer by target address. Both outbound and
+ //inbound nodes will be searched for the target node. An error message will
+ //be returned if the peer was not found.
DisconnectPeer(ctx context.Context, in *DisconnectPeerRequest, opts ...grpc.CallOption) (*DisconnectPeerResponse, error)
// lncli: `neutrino isbanned`
- // 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)
// lncli: `neutrino getblockheader`
- // 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)
- // 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)
// lncli: `neutrino getcfilter`
- // 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)
// Deprecated: Do not use.
//
- // Deprecated, use chainrpc.GetBlockHash instead.
- // GetBlockHash returns the header hash of a block at a given height.
+ //Deprecated, use chainrpc.GetBlockHash instead.
+ //GetBlockHash returns the header hash of a block at a given height.
GetBlockHash(ctx context.Context, in *GetBlockHashRequest, opts ...grpc.CallOption) (*GetBlockHashResponse, error)
}
@@ -135,33 +136,34 @@ func (c *neutrinoKitClient) GetBlockHash(ctx context.Context, in *GetBlockHashRe
// for forward compatibility
type NeutrinoKitServer interface {
// lncli: `neutrino status`
- // Status returns the status of the light client neutrino instance,
- // along with height and hash of the best block, and a list of connected
- // peers.
+ //Status returns the status of the light client neutrino instance,
+ //along with height and hash of the best block, and a list of connected
+ //peers.
Status(context.Context, *StatusRequest) (*StatusResponse, error)
// lncli: `neutrino addpeer`
- // 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)
// lncli: `neutrino disconnectpeer`
- // DisconnectPeer disconnects a peer by target address. Both outbound and
- // inbound nodes will be searched for the target node. An error message will
- // be returned if the peer was not found.
+ //DisconnectPeer disconnects a peer by target address. Both outbound and
+ //inbound nodes will be searched for the target node. An error message will
+ //be returned if the peer was not found.
DisconnectPeer(context.Context, *DisconnectPeerRequest) (*DisconnectPeerResponse, error)
// lncli: `neutrino isbanned`
- // 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)
// lncli: `neutrino getblockheader`
- // 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)
- // GetBlock returns a block with a particular block hash.
+ //
+ //GetBlock returns a block with a particular block hash.
GetBlock(context.Context, *GetBlockRequest) (*GetBlockResponse, error)
// lncli: `neutrino getcfilter`
- // GetCFilter returns a compact filter from a block.
+ //GetCFilter returns a compact filter from a block.
GetCFilter(context.Context, *GetCFilterRequest) (*GetCFilterResponse, error)
// Deprecated: Do not use.
//
- // Deprecated, use chainrpc.GetBlockHash instead.
- // GetBlockHash returns the header hash of a block at a given height.
+ //Deprecated, use chainrpc.GetBlockHash instead.
+ //GetBlockHash returns the header hash of a block at a given height.
GetBlockHash(context.Context, *GetBlockHashRequest) (*GetBlockHashResponse, error)
mustEmbedUnimplementedNeutrinoKitServer()
}
### lnrpc/peersrpc/peers.pb.go
@@ -74,21 +74,26 @@ func (UpdateAction) EnumDescriptor() ([]byte, []int) {
type FeatureSet int32
const (
- // SET_INIT identifies features that should be sent in an Init message to
- // a remote peer.
+ //
+ //SET_INIT identifies features that should be sent in an Init message to
+ //a remote peer.
FeatureSet_SET_INIT FeatureSet = 0
- // SET_LEGACY_GLOBAL identifies features that should be set in the legacy
- // GlobalFeatures field of an Init message, which maintains backwards
- // compatibility with nodes that haven't implemented flat features.
+ //
+ //SET_LEGACY_GLOBAL identifies features that should be set in the legacy
+ //GlobalFeatures field of an Init message, which maintains backwards
+ //compatibility with nodes that haven't implemented flat features.
FeatureSet_SET_LEGACY_GLOBAL FeatureSet = 1
- // SET_NODE_ANN identifies features that should be advertised on node
- // announcements.
+ //
+ //SET_NODE_ANN identifies features that should be advertised on node
+ //announcements.
FeatureSet_SET_NODE_ANN FeatureSet = 2
- // SET_INVOICE identifies features that should be advertised on invoices
- // generated by the daemon.
+ //
+ //SET_INVOICE identifies features that should be advertised on invoices
+ //generated by the daemon.
FeatureSet_SET_INVOICE FeatureSet = 3
- // SET_INVOICE_AMP identifies the features that should be advertised on
- // AMP invoices generated by the daemon.
+ //
+ //SET_INVOICE_AMP identifies the features that should be advertised on
+ //AMP invoices generated by the daemon.
FeatureSet_SET_INVOICE_AMP FeatureSet = 4
)
### lnrpc/peersrpc/peers_grpc.pb.go
@@ -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.
type PeersClient interface {
// lncli: peers updatenodeannouncement
- // UpdateNodeAnnouncement allows the caller to update the node parameters
- // and broadcasts a new version of the node announcement to its peers.
+ //UpdateNodeAnnouncement allows the caller to update the node parameters
+ //and broadcasts a new version of the node announcement to its peers.
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
type PeersServer interface {
// lncli: peers updatenodeannouncement
- // UpdateNodeAnnouncement allows the caller to update the node parameters
- // and broadcasts a new version of the node announcement to its peers.
+ //UpdateNodeAnnouncement allows the caller to update the node parameters
+ //and broadcasts a new version of the node announcement to its peers.
UpdateNodeAnnouncement(context.Context, *NodeAnnouncementUpdateRequest) (*NodeAnnouncementUpdateResponse, error)
mustEmbedUnimplementedPeersServer()
}
### lnrpc/routerrpc/router.pb.go
@@ -355,101 +355,122 @@ type SendPaymentRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The identity pubkey of the payment recipient
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
- // Number of satoshis to send.
//
- // The fields amt and amt_msat are mutually exclusive.
+ //Number of satoshis to send.
+ //
+ //The fields amt and amt_msat are mutually exclusive.
Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"`
// 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"`
- // The CLTV delta from the current height that should be used to set the
- // timelock for the final hop.
+ //
+ //The CLTV delta from the current height that should be used to set the
+ //timelock for the final hop.
FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
- // 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
- // 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
- // is specified, the following fields are required: dest, amt and payment_hash.
+ //
+ //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
+ //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
+ //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"`
- // An optional limit, expressed in seconds, on the time to wait before
- // attempting the first HTLC. Once HTLCs are in flight, the payment will
- // not be aborted until the HTLCs are either settled or failed. If the field
- // is not set or is explicitly set to zero, the default value of 60 seconds
- // will be applied.
+ //
+ //An optional limit, expressed in seconds, on the time to wait before
+ //attempting the first HTLC. Once HTLCs are in flight, the payment will
+ //not be aborted until the HTLCs are either settled or failed. If the field
+ //is not set or is explicitly set to zero, the default value of 60 seconds
+ //will be applied.
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 fields fee_limit_sat and fee_limit_msat are mutually exclusive.
+ //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 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"`
- // 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
- // `--max-cltv-expiry` is enforced.
+ //
+ //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
+ //`--max-cltv-expiry` is enforced.
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"`
- // 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
- // application specific data during the payment attempt. Record types are
- // required to be in the custom range >= 65536. When using REST, the values
- // must be encoded as base64.
+ //
+ //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
+ //application specific data during the payment attempt. Record types are
+ //required to be in the custom range >= 65536. When using REST, the values
+ //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" protobuf_val:"bytes,2,opt,name=value"`
- // Number of millisatoshis to send.
//
- // The fields amt and amt_msat are mutually exclusive.
+ //Number of millisatoshis to send.
+ //
+ //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"`
- // 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 fields fee_limit_sat and fee_limit_msat are mutually exclusive.
+ //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 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"`
- // 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"`
// 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"`
- // 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
- // 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
- // fallback.
+ //
+ //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
+ //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
+ //fallback.
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
- // amount.
+ //
+ //The maximum number of partial payments that may be use to complete the full
+ //amount.
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
- // that show which htlcs are still in flight are suppressed.
+ //
+ //If set, only the final payment update is streamed back. Intermediate updates
+ //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"`
- // The channel ids of the channels are allowed for the first hop. If empty,
- // any channel may be used.
+ //
+ //The channel ids of the channels are allowed for the first hop. If empty,
+ //any channel may be used.
OutgoingChanIds []uint64 `protobuf:"varint,19,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"`
- // An optional payment addr to be included within the last hop of the route.
- // This is also called payment secret in specifications (e.g. BOLT 11).
+ //
+ //An optional payment addr to be included within the last hop of the route.
+ //This is also called payment secret in specifications (e.g. BOLT 11).
PaymentAddr []byte `protobuf:"bytes,20,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
- // The largest payment split that should be attempted when making a payment if
- // 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
- // value is in milli-satoshis.
+ //
+ //The largest payment split that should be attempted when making a payment if
+ //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
+ //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"`
- // 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"`
- // 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.
+ //
+ //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.
TimePref float64 `protobuf:"fixed64,23,opt,name=time_pref,json=timePref,proto3" json:"time_pref,omitempty"`
- // If set, the payment loop can be interrupted by manually canceling the
- // payment context, even before the payment timeout is reached. Note that the
- // payment may still succeed after cancellation, as in-flight attempts can
- // still settle afterwards. Canceling will only prevent further attempts from
- // being sent.
+ //
+ //If set, the payment loop can be interrupted by manually canceling the
+ //payment context, even before the payment timeout is reached. Note that the
+ //payment may still succeed after cancellation, as in-flight attempts can
+ //still settle afterwards. Canceling will only prevent further attempts from
+ //being sent.
Cancelable bool `protobuf:"varint,24,opt,name=cancelable,proto3" json:"cancelable,omitempty"`
- // An optional field that can be used to pass an arbitrary set of TLV records
- // to the first hop peer of this payment. This can be used to pass application
- // specific data during the payment attempt. Record types are required to be in
- // the custom range >= 65536. When using REST, the values must be encoded as
- // base64.
+ //
+ //An optional field that can be used to pass an arbitrary set of TLV records
+ //to the first hop peer of this payment. This can be used to pass application
+ //specific data during the payment attempt. Record types are required to be in
+ //the custom range >= 65536. When using REST, the values must be encoded as
+ //base64.
FirstHopCustomRecords map[uint64][]byte `protobuf:"bytes,25,rep,name=first_hop_custom_records,json=firstHopCustomRecords,proto3" json:"first_hop_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -657,8 +678,9 @@ type TrackPaymentRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The hash of the payment to look up.
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
- // that show which htlcs are still in flight are suppressed.
+ //
+ //If set, only the final payment update is streamed back. Intermediate updates
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -710,8 +732,9 @@ func (x *TrackPaymentRequest) GetNoInflightUpdates() bool {
type TrackPaymentsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // If set, only the final payment updates are streamed back. Intermediate
- // updates that show which htlcs are still in flight are suppressed.
+ //
+ //If set, only the final payment updates are streamed back. Intermediate
+ //updates that show which htlcs are still in flight are suppressed.
NoInflightUpdates bool `protobuf:"varint,1,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -756,34 +779,39 @@ func (x *TrackPaymentsRequest) GetNoInflightUpdates() bool {
type RouteFeeRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The destination one wishes to obtain a routing fee quote to. If set, this
- // parameter requires the amt_sat parameter also to be set. This parameter
- // combination triggers a graph based routing fee estimation as opposed to a
- // payment probe based estimate in case a payment request is provided. The
- // graph based estimation is an algorithm that is executed on the in memory
- // graph. Hence its runtime is significantly shorter than a payment probe
- // estimation that sends out actual payments to the network.
+ //
+ //The destination one wishes to obtain a routing fee quote to. If set, this
+ //parameter requires the amt_sat parameter also to be set. This parameter
+ //combination triggers a graph based routing fee estimation as opposed to a
+ //payment probe based estimate in case a payment request is provided. The
+ //graph based estimation is an algorithm that is executed on the in memory
+ //graph. Hence its runtime is significantly shorter than a payment probe
+ //estimation that sends out actual payments to the network.
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
- // The amount one wishes to send to the target destination. It is only to be
- // used in combination with the dest parameter.
+ //
+ //The amount one wishes to send to the target destination. It is only to be
+ //used in combination with the dest parameter.
AmtSat int64 `protobuf:"varint,2,opt,name=amt_sat,json=amtSat,proto3" json:"amt_sat,omitempty"`
- // A payment request of the target node that the route fee request is intended
- // for. Its parameters are input to probe payments that estimate routing fees.
- // The timeout parameter can be specified to set a maximum time on the probing
- // attempt. Cannot be used in combination with dest and amt_sat.
+ //
+ //A payment request of the target node that the route fee request is intended
+ //for. Its parameters are input to probe payments that estimate routing fees.
+ //The timeout parameter can be specified to set a maximum time on the probing
+ //attempt. Cannot be used in combination with dest and amt_sat.
PaymentRequest string `protobuf:"bytes,3,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
- // A user preference of how long a probe payment should maximally be allowed to
- // take, denoted in seconds. The probing payment loop is aborted if this
- // timeout is reached. Note that the probing process itself can take longer
- // than the timeout if the HTLC becomes delayed or stuck. Canceling the context
- // of this call will not cancel the payment loop, the duration is only
- // controlled by the timeout parameter. If the field is not set or is
- // explicitly set to zero, the default value of 60 seconds will be applied.
+ //
+ //A user preference of how long a probe payment should maximally be allowed to
+ //take, denoted in seconds. The probing payment loop is aborted if this
+ //timeout is reached. Note that the probing process itself can take longer
+ //than the timeout if the HTLC becomes delayed or stuck. Canceling the context
+ //of this call will not cancel the payment loop, the duration is only
+ //controlled by the timeout parameter. If the field is not set or is
+ //explicitly set to zero, the default value of 60 seconds will be applied.
Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
- // The channel ids of the channels that are allowed for the first hop. If
- // empty, any channel may be used. This field is applicable to both
- // graph-based fee estimation (using dest + amt_sat) and probe-based
- // estimation (using payment_request).
+ //
+ //The channel ids of the channels that are allowed for the first hop. If
+ //empty, any channel may be used. This field is applicable to both
+ //graph-based fee estimation (using dest + amt_sat) and probe-based
+ //estimation (using payment_request).
OutgoingChanIds []uint64 `protobuf:"varint,5,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -856,15 +884,18 @@ func (x *RouteFeeRequest) GetOutgoingChanIds() []uint64 {
type RouteFeeResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // A lower bound of the estimated fee to the target destination within the
- // network, expressed in milli-satoshis.
+ //
+ //A lower bound of the estimated fee to the target destination within the
+ //network, expressed in milli-satoshis.
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
- // will still need to factor in the final CLTV delta of the last hop into this
- // value.
+ //
+ //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
+ //value.
TimeLockDelay int64 `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"`
- // An indication whether a probing payment succeeded or whether and why it
- // failed. FAILURE_REASON_NONE indicates success.
+ //
+ //An indication whether a probing payment succeeded or whether and why it
+ //failed. FAILURE_REASON_NONE indicates success.
FailureReason lnrpc.PaymentFailureReason `protobuf:"varint,5,opt,name=failure_reason,json=failureReason,proto3,enum=lnrpc.PaymentFailureReason" json:"failure_reason,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -927,16 +958,18 @@ type SendToRouteRequest struct {
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 *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
- // 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
- // routes, incorrect payment details, or insufficient funds.
+ //
+ //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
+ //failed unless a terminal error is occurred, such as payment timeout, no
+ //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"`
- // An optional field that can be used to pass an arbitrary set of TLV records
- // to the first hop peer of this payment. This can be used to pass application
- // specific data during the payment attempt. Record types are required to be in
- // the custom range >= 65536. When using REST, the values must be encoded as
- // base64.
+ //
+ //An optional field that can be used to pass an arbitrary set of TLV records
+ //to the first hop peer of this payment. This can be used to pass application
+ //specific data during the payment attempt. Record types are required to be in
+ //the custom range >= 65536. When using REST, the values must be encoded as
+ //base64.
FirstHopCustomRecords map[uint64][]byte `protobuf:"bytes,4,rep,name=first_hop_custom_records,json=firstHopCustomRecords,proto3" json:"first_hop_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1313,11 +1346,13 @@ type PairData struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Time of last failure.
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
- // set to zero if the failure is independent of amount.
+ //
+ //Lowest amount that failed to forward rounded to whole sats. This may be
+ //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"`
- // Lowest amount that failed to forward in millisats. This may be
- // set to zero if the failure is independent of amount.
+ //
+ //Lowest amount that failed to forward in millisats. This may be
+ //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"`
// Time of last success.
SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"`
@@ -1439,7 +1474,8 @@ func (*GetMissionControlConfigRequest) Descriptor() ([]byte, []int) {
type GetMissionControlConfigResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Mission control's currently active config.
+ //
+ //Mission control's currently active config.
Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1484,8 +1520,9 @@ func (x *GetMissionControlConfigResponse) GetConfig() *MissionControlConfig {
type SetMissionControlConfigRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The config to set for mission control. Note that all values *must* be set,
- // because the full config will be applied.
+ //
+ //The config to set for mission control. Note that all values *must* be set,
+ //because the full config will be applied.
Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1566,40 +1603,47 @@ func (*SetMissionControlConfigResponse) Descriptor() ([]byte, []int) {
type MissionControlConfig struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Deprecated, use AprioriParameters. The amount of time mission control will
- // take to restore a penalized node or channel back to 50% success probability,
- // expressed in seconds. Setting this value to a higher value will penalize
- // failures for longer, making mission control less likely to route through
- // nodes and channels that we have previously recorded failures for.
+ //
+ //Deprecated, use AprioriParameters. The amount of time mission control will
+ //take to restore a penalized node or channel back to 50% success probability,
+ //expressed in seconds. Setting this value to a higher value will penalize
+ //failures for longer, making mission control less likely to route through
+ //nodes and channels that we have previously recorded failures for.
//
// Deprecated: Marked as deprecated in routerrpc/router.proto.
HalfLifeSeconds uint64 `protobuf:"varint,1,opt,name=half_life_seconds,json=halfLifeSeconds,proto3" json:"half_life_seconds,omitempty"`
- // Deprecated, use AprioriParameters. 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 control more willing to try hops
- // that we have no information about, lower values will discourage trying these
- // hops.
+ //
+ //Deprecated, use AprioriParameters. 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 control more willing to try hops
+ //that we have no information about, lower values will discourage trying these
+ //hops.
//
// Deprecated: Marked as deprecated in routerrpc/router.proto.
HopProbability float32 `protobuf:"fixed32,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"`
- // Deprecated, use AprioriParameters. 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 historical payments and just use the hop
- // probability to assess the probability of success for each hop. A zero value
- // ignores hop probability completely and relies entirely on historical
- // results, unless none are available.
+ //
+ //Deprecated, use AprioriParameters. 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 historical payments and just use the hop
+ //probability to assess the probability of success for each hop. A zero value
+ //ignores hop probability completely and relies entirely on historical
+ //results, unless none are available.
//
// Deprecated: Marked as deprecated in routerrpc/router.proto.
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"`
- // The minimum time that must have passed since the previously recorded failure
- // before we raise the failure amount.
+ //
+ //The minimum time that must have passed since the previously recorded failure
+ //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"`
- // ProbabilityModel defines which probability estimator should be used in
- // pathfinding. Note that the bimodal estimator is experimental.
+ //
+ //ProbabilityModel defines which probability estimator should be used in
+ //pathfinding. Note that the bimodal estimator is experimental.
Model MissionControlConfig_ProbabilityModel `protobuf:"varint,6,opt,name=model,proto3,enum=routerrpc.MissionControlConfig_ProbabilityModel" json:"model,omitempty"`
- // EstimatorConfig is populated dependent on the estimator type.
+ //
+ //EstimatorConfig is populated dependent on the estimator type.
//
// Types that are valid to be assigned to EstimatorConfig:
//
@@ -1728,21 +1772,24 @@ func (*MissionControlConfig_Bimodal) isMissionControlConfig_EstimatorConfig() {}
type BimodalParameters struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // NodeWeight defines how strongly other previous forwardings on channels of a
- // router should be taken into account when computing a channel's probability
- // to route. The allowed values are in the range [0, 1], where a value of 0
- // means that only direct information about a channel is taken into account.
+ //
+ //NodeWeight defines how strongly other previous forwardings on channels of a
+ //router should be taken into account when computing a channel's probability
+ //to route. The allowed values are in the range [0, 1], where a value of 0
+ //means that only direct information about a channel is taken into account.
NodeWeight float64 `protobuf:"fixed64,1,opt,name=node_weight,json=nodeWeight,proto3" json:"node_weight,omitempty"`
- // ScaleMsat describes the scale over which channels statistically have some
- // liquidity left. The value determines how quickly the bimodal distribution
- // drops off from the edges of a channel. A larger value (compared to typical
- // channel capacities) means that the drop off is slow and that channel
- // balances are distributed more uniformly. A small value leads to the
- // assumption of very unbalanced channels.
+ //
+ //ScaleMsat describes the scale over which channels statistically have some
+ //liquidity left. The value determines how quickly the bimodal distribution
+ //drops off from the edges of a channel. A larger value (compared to typical
+ //channel capacities) means that the drop off is slow and that channel
+ //balances are distributed more uniformly. A small value leads to the
+ //assumption of very unbalanced channels.
ScaleMsat uint64 `protobuf:"varint,2,opt,name=scale_msat,json=scaleMsat,proto3" json:"scale_msat,omitempty"`
- // DecayTime describes the information decay of knowledge about previous
- // successes and failures in channels. The smaller the decay time, the quicker
- // we forget about past forwardings.
+ //
+ //DecayTime describes the information decay of knowledge about previous
+ //successes and failures in channels. The smaller the decay time, the quicker
+ //we forget about past forwardings.
DecayTime uint64 `protobuf:"varint,3,opt,name=decay_time,json=decayTime,proto3" json:"decay_time,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1801,28 +1848,32 @@ func (x *BimodalParameters) GetDecayTime() uint64 {
type AprioriParameters struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The amount of time mission control will take to restore a penalized node
- // or channel back to 50% success probability, expressed in seconds. Setting
- // this value to a higher value will penalize failures for longer, making
- // mission control less likely to route through nodes and channels that we
- // have previously recorded failures for.
+ //
+ //The amount of time mission control will take to restore a penalized node
+ //or channel back to 50% success probability, expressed in seconds. Setting
+ //this value to a higher value will penalize failures for longer, making
+ //mission control less likely to route through nodes and channels that we
+ //have previously recorded failures for.
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
- // 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
- // values will discourage trying these hops.
+ //
+ //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
+ //control more willing to try hops that we have no information about, lower
+ //values will discourage trying these hops.
HopProbability float64 `protobuf:"fixed64,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"`
- // 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
- // historical payments and just use the hop probability to assess the
- // probability of success for each hop. A zero value ignores hop probability
- // completely and relies entirely on historical results, unless none are
- // available.
+ //
+ //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
+ //historical payments and just use the hop probability to assess the
+ //probability of success for each hop. A zero value ignores hop probability
+ //completely and relies entirely on historical results, unless none are
+ //available.
Weight float64 `protobuf:"fixed64,3,opt,name=weight,proto3" json:"weight,omitempty"`
- // The fraction of a channel's capacity that we consider to have liquidity. For
- // amounts that come close to or exceed the fraction, an additional penalty is
- // applied. A value of 1.0 disables the capacity factor. Allowed values are in
- // [0.75, 1.0].
+ //
+ //The fraction of a channel's capacity that we consider to have liquidity. For
+ //amounts that come close to or exceed the fraction, an additional penalty is
+ //applied. A value of 1.0 disables the capacity factor. Allowed values are in
+ //[0.75, 1.0].
CapacityFraction float64 `protobuf:"fixed64,4,opt,name=capacity_fraction,json=capacityFraction,proto3" json:"capacity_fraction,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2005,26 +2056,32 @@ func (x *QueryProbabilityResponse) GetHistory() *PairData {
type BuildRouteRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The amount to send expressed in msat. If set to zero, the minimum routable
- // amount is used.
+ //
+ //The amount to send expressed in msat. If set to zero, the minimum routable
+ //amount is used.
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
- // of the final hop
+ //
+ //CLTV delta from the current height that should be used for the timelock
+ //of the final hop
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,
- // any channel may be used.
+ //
+ //The channel id of the channel that must be taken to the first hop. If zero,
+ //any channel may be used.
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
- // pubkey.
+ //
+ //A list of hops that defines the route. This does not include the source hop
+ //pubkey.
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.
- // This is also called payment secret in specifications (e.g. BOLT 11).
+ //
+ //An optional payment addr to be included within the last hop of the route.
+ //This is also called payment secret in specifications (e.g. BOLT 11).
PaymentAddr []byte `protobuf:"bytes,5,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
- // An optional field that can be used to pass an arbitrary set of TLV records
- // to the first hop peer of this payment. This can be used to pass application
- // specific data during the payment attempt. Record types are required to be in
- // the custom range >= 65536. When using REST, the values must be encoded as
- // base64.
+ //
+ //An optional field that can be used to pass an arbitrary set of TLV records
+ //to the first hop peer of this payment. This can be used to pass application
+ //specific data during the payment attempt. Record types are required to be in
+ //the custom range >= 65536. When using REST, the values must be encoded as
+ //base64.
FirstHopCustomRecords map[uint64][]byte `protobuf:"bytes,6,rep,name=first_hop_custom_records,json=firstHopCustomRecords,proto3" json:"first_hop_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2104,7 +2161,8 @@ func (x *BuildRouteRequest) GetFirstHopCustomRecords() map[uint64][]byte {
type BuildRouteResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2191,22 +2249,28 @@ func (*SubscribeHtlcEventsRequest) Descriptor() ([]byte, []int) {
// outgoing channel id and htlc id. [EXPERIMENTAL]
type HtlcEvent struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The short channel id that the incoming htlc arrived at our node on. This
- // value is zero for sends.
+ //
+ //The short channel id that the incoming htlc arrived at our node on. This
+ //value is zero for sends.
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
- // is zero for receives.
+ //
+ //The short channel id that the outgoing htlc left our node on. This value
+ //is zero for receives.
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.
- // This value is zero for sends.
+ //
+ //Incoming id is the index of the incoming htlc in the incoming channel.
+ //This value is zero for sends.
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.
- // This value is zero for receives.
+ //
+ //Outgoing id is the index of the outgoing htlc in the outgoing channel.
+ //This value is zero for receives.
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"`
- // The event type indicates whether the htlc was part of a send, receive or
- // forward.
+ //
+ //The event type indicates whether the htlc was part of a send, receive or
+ //forward.
EventType HtlcEvent_EventType `protobuf:"varint,6,opt,name=event_type,json=eventType,proto3,enum=routerrpc.HtlcEvent_EventType" json:"event_type,omitempty"`
// Types that are valid to be assigned to Event:
//
@@ -2686,9 +2750,10 @@ type LinkFailEvent struct {
Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
// 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"`
- // FailureDetail provides additional information about the reason for the
- // failure. This detail enriches the information provided by the wire message
- // and may be 'no detail' if the wire message requires no additional metadata.
+ //
+ //FailureDetail provides additional information about the reason for the
+ //failure. This detail enriches the information provided by the wire message
+ //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"`
// A string representation of the link failure.
FailureString string `protobuf:"bytes,4,opt,name=failure_string,json=failureString,proto3" json:"failure_string,omitempty"`
@@ -2756,9 +2821,9 @@ func (x *LinkFailEvent) GetFailureString() string {
type CircuitKey struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // / 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"`
- // / 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2810,19 +2875,21 @@ func (x *CircuitKey) GetHtlcId() uint64 {
type ForwardHtlcInterceptRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The key of this forwarded htlc. It defines the incoming channel id and
- // the index in this channel.
//
- // Interceptor clients should handle requests for the same circuit key
- // idempotently. Requests may be replayed after reconnect, and an htlc that was
- // previously offered off-chain may be offered again after it moves on-chain.
+ //The key of this forwarded htlc. It defines the incoming channel id and
+ //the index in this channel.
+ //
+ //Interceptor clients should handle requests for the same circuit key
+ //idempotently. Requests may be replayed after reconnect, and an htlc that was
+ //previously offered off-chain may be offered again after it moves on-chain.
IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"`
// The incoming htlc amount.
IncomingAmountMsat uint64 `protobuf:"varint,5,opt,name=incoming_amount_msat,json=incomingAmountMsat,proto3" json:"incoming_amount_msat,omitempty"`
// The incoming htlc expiry.
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
- // request.
+ //
+ //The htlc payment hash. This value is not guaranteed to be unique per
+ //request.
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
// non-strict forwarding, this isn't necessarily the channel over which the
@@ -2852,10 +2919,9 @@ type ForwardHtlcInterceptRequest struct {
// forward.
//
// The possible next-hop representations are:
- //
- // node ID empty, channel ID 0: final receive;
- // node ID empty, ordinary channel ID: channel-addressed forward;
- // node ID present, channel ID MaxUint64: node-addressed forward.
+ // node ID empty, channel ID 0: final receive;
+ // node ID empty, ordinary channel ID: channel-addressed forward;
+ // node ID present, channel ID MaxUint64: node-addressed forward.
OutgoingRequestedNodeId []byte `protobuf:"bytes,12,opt,name=outgoing_requested_node_id,json=outgoingRequestedNodeId,proto3" json:"outgoing_requested_node_id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2993,9 +3059,9 @@ func (x *ForwardHtlcInterceptRequest) GetOutgoingRequestedNodeId() []byte {
// unresolved.
type ForwardHtlcInterceptResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // *
- // The key of this forwarded htlc. It defines the incoming channel id and
- // the index in this channel.
+ //*
+ //The key of this forwarded htlc. It defines the incoming channel id and
+ //the index in this channel.
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.
Action ResolveHoldForwardAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ResolveHoldForwardAction" json:"action,omitempty"`
### lnrpc/routerrpc/router_grpc.pb.go
@@ -20,109 +20,114 @@ 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.
type RouterClient interface {
// lncli: `sendpayment`
- // SendPaymentV2 attempts to route a payment described by the passed
- // PaymentRequest to the final destination. The call returns a stream of
- // payment updates. When using this RPC, make sure to set a fee limit, as the
- // default routing fee limit is 0 sats. Without a non-zero fee limit only
- // routes without fees will be attempted which often fails with
- // FAILURE_REASON_NO_ROUTE.
+ //SendPaymentV2 attempts to route a payment described by the passed
+ //PaymentRequest to the final destination. The call returns a stream of
+ //payment updates. When using this RPC, make sure to set a fee limit, as the
+ //default routing fee limit is 0 sats. Without a non-zero fee limit only
+ //routes without fees will be attempted which often fails with
+ //FAILURE_REASON_NO_ROUTE.
SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error)
// lncli: `trackpayment`
- // TrackPaymentV2 returns an update stream for the payment identified by the
- // payment hash.
+ //TrackPaymentV2 returns an update stream for the payment identified by the
+ //payment hash.
TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error)
- // TrackPayments returns an update stream for every payment that is not in a
- // terminal state. Note that if payments are in-flight while starting a new
- // subscription, the start of the payment stream could produce out-of-order
- // and/or duplicate events. In order to get updates for every in-flight
- // payment attempt make sure to subscribe to this method before initiating any
- // payments.
+ //
+ //TrackPayments returns an update stream for every payment that is not in a
+ //terminal state. Note that if payments are in-flight while starting a new
+ //subscription, the start of the payment stream could produce out-of-order
+ //and/or duplicate events. In order to get updates for every in-flight
+ //payment attempt make sure to subscribe to this method before initiating any
+ //payments.
TrackPayments(ctx context.Context, in *TrackPaymentsRequest, opts ...grpc.CallOption) (Router_TrackPaymentsClient, error)
// lncli: `estimateroutefee`
- // 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.
+ //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.
EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error)
// lncli: `sendtoroute`
- // SendToRouteV2 attempts to make a payment via the specified route. This
- // method differs from SendPayment in that it allows users to specify a full
- // route manually. This can be used for things like rebalancing, and atomic
- // swaps.
+ //SendToRouteV2 attempts to make a payment via the specified route. This
+ //method differs from SendPayment in that it allows users to specify a full
+ //route manually. This can be used for things like rebalancing, and atomic
+ //swaps.
SendToRouteV2(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*lnrpc.HTLCAttempt, error)
// lncli: `resetmc`
- // ResetMissionControl clears all mission control state and starts with a clean
- // slate.
+ //ResetMissionControl clears all mission control state and starts with a clean
+ //slate.
ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error)
// lncli: `querymc`
- // QueryMissionControl exposes the internal mission control state to callers.
- // It is a development feature.
+ //QueryMissionControl exposes the internal mission control state to callers.
+ //It is a development feature.
QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error)
// lncli: `importmc`
- // XImportMissionControl is an experimental API that imports the state provided
- // to the internal mission control's state, using all results which are more
- // recent than our existing values. These values will only be imported
- // in-memory, and will not be persisted across restarts.
+ //XImportMissionControl is an experimental API that imports the state provided
+ //to the internal mission control's state, using all results which are more
+ //recent than our existing values. These values will only be imported
+ //in-memory, and will not be persisted across restarts.
XImportMissionControl(ctx context.Context, in *XImportMissionControlRequest, opts ...grpc.CallOption) (*XImportMissionControlResponse, error)
// lncli: `getmccfg`
- // 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)
// lncli: `setmccfg`
- // SetMissionControlConfig will set mission control's config, if the config
- // provided is valid.
+ //SetMissionControlConfig will set mission control's config, if the config
+ //provided is valid.
SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error)
// lncli: `queryprob`
- // Deprecated. QueryProbability returns the current success probability
- // estimate for a given node pair and amount. The call returns a zero success
- // probability if no channel is available or if the amount violates min/max
- // HTLC constraints.
+ //Deprecated. QueryProbability returns the current success probability
+ //estimate for a given node pair and amount. The call returns a zero success
+ //probability if no channel is available or if the amount violates min/max
+ //HTLC constraints.
QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error)
// lncli: `buildroute`
- // BuildRoute builds a fully specified route based on a list of hop public
- // keys. It retrieves the relevant channel policies from the graph in order to
- // calculate the correct fees and time locks.
- // Note that LND will use its default final_cltv_delta if no value is supplied.
- // Make sure to add the correct final_cltv_delta depending on the invoice
- // restriction. Moreover the caller has to make sure to provide the
- // payment_addr if the route is paying an invoice which signaled it.
+ //BuildRoute builds a fully specified route based on a list of hop public
+ //keys. It retrieves the relevant channel policies from the graph in order to
+ //calculate the correct fees and time locks.
+ //Note that LND will use its default final_cltv_delta if no value is supplied.
+ //Make sure to add the correct final_cltv_delta depending on the invoice
+ //restriction. Moreover the caller has to make sure to provide the
+ //payment_addr if the route is paying an invoice which signaled it.
BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error)
- // SubscribeHtlcEvents creates a uni-directional stream from the server to
- // the client which delivers a stream of htlc events.
+ //
+ //SubscribeHtlcEvents creates a uni-directional stream from the server to
+ //the client which delivers a stream of htlc events.
SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error)
- // *
- // HtlcInterceptor dispatches a bi-directional streaming RPC in which
- // Forwarded HTLC requests are sent to the client and the client responds with
- // a boolean that tells LND if this htlc should be intercepted.
- // In case of interception, the htlc can be either settled, cancelled or
- // resumed later by using the ResolveHoldForward endpoint.
+ //*
+ //HtlcInterceptor dispatches a bi-directional streaming RPC in which
+ //Forwarded HTLC requests are sent to the client and the client responds with
+ //a boolean that tells LND if this htlc should be intercepted.
+ //In case of interception, the htlc can be either settled, cancelled or
+ //resumed later by using the ResolveHoldForward endpoint.
HtlcInterceptor(ctx context.Context, opts ...grpc.CallOption) (Router_HtlcInterceptorClient, error)
// lncli: `updatechanstatus`
- // UpdateChanStatus attempts to manually set the state of a channel
- // (enabled, disabled, or auto). A manual "disable" request will cause the
- // channel to stay disabled until a subsequent manual request of either
- // "enable" or "auto".
+ //UpdateChanStatus attempts to manually set the state of a channel
+ //(enabled, disabled, or auto). A manual "disable" request will cause the
+ //channel to stay disabled until a subsequent manual request of either
+ //"enable" or "auto".
UpdateChanStatus(ctx context.Context, in *UpdateChanStatusRequest, opts ...grpc.CallOption) (*UpdateChanStatusResponse, error)
- // XAddLocalChanAliases is an experimental API that creates a set of new
- // channel SCID alias mappings. The final total set of aliases in the manager
- // after the add operation is returned. This is only a locally stored alias,
- // and will not be communicated to the channel peer via any message. Therefore,
- // routing over such an alias will only work if the peer also calls this same
- // RPC on their end. If an alias already exists, an error is returned
+ //
+ //XAddLocalChanAliases is an experimental API that creates a set of new
+ //channel SCID alias mappings. The final total set of aliases in the manager
+ //after the add operation is returned. This is only a locally stored alias,
+ //and will not be communicated to the channel peer via any message. Therefore,
+ //routing over such an alias will only work if the peer also calls this same
+ //RPC on their end. If an alias already exists, an error is returned
XAddLocalChanAliases(ctx context.Context, in *AddAliasesRequest, opts ...grpc.CallOption) (*AddAliasesResponse, error)
- // XDeleteLocalChanAliases is an experimental API that deletes a set of alias
- // mappings. The final total set of aliases in the manager after the delete
- // operation is returned. The deletion will not be communicated to the channel
- // peer via any message.
+ //
+ //XDeleteLocalChanAliases is an experimental API that deletes a set of alias
+ //mappings. The final total set of aliases in the manager after the delete
+ //operation is returned. The deletion will not be communicated to the channel
+ //peer via any message.
XDeleteLocalChanAliases(ctx context.Context, in *DeleteAliasesRequest, opts ...grpc.CallOption) (*DeleteAliasesResponse, error)
- // XFindBaseLocalChanAlias is an experimental API that looks up the base scid
- // for a local chan alias that was registered during the current runtime.
+ //
+ //XFindBaseLocalChanAlias is an experimental API that looks up the base scid
+ //for a local chan alias that was registered during the current runtime.
XFindBaseLocalChanAlias(ctx context.Context, in *FindBaseAliasRequest, opts ...grpc.CallOption) (*FindBaseAliasResponse, error)
// lncli: `deletefwdhistory`
- // DeleteForwardingHistory allows the caller to delete forwarding history
- // events with a timestamp at or before a specified time. This is useful
- // for implementing data retention policies for privacy purposes. The call
- // deletes events in batches and returns statistics including the total number
- // of events deleted and the aggregate fees earned from those events. The
- // deletion is performed in a transaction-safe manner with configurable batch
- // sizes to avoid holding large database locks.
+ //DeleteForwardingHistory allows the caller to delete forwarding history
+ //events with a timestamp at or before a specified time. This is useful
+ //for implementing data retention policies for privacy purposes. The call
+ //deletes events in batches and returns statistics including the total number
+ //of events deleted and the aggregate fees earned from those events. The
+ //deletion is performed in a transaction-safe manner with configurable batch
+ //sizes to avoid holding large database locks.
DeleteForwardingHistory(ctx context.Context, in *DeleteForwardingHistoryRequest, opts ...grpc.CallOption) (*DeleteForwardingHistoryResponse, error)
}
@@ -424,109 +429,114 @@ func (c *routerClient) DeleteForwardingHistory(ctx context.Context, in *DeleteFo
// for forward compatibility
type RouterServer interface {
// lncli: `sendpayment`
- // SendPaymentV2 attempts to route a payment described by the passed
- // PaymentRequest to the final destination. The call returns a stream of
- // payment updates. When using this RPC, make sure to set a fee limit, as the
- // default routing fee limit is 0 sats. Without a non-zero fee limit only
- // routes without fees will be attempted which often fails with
- // FAILURE_REASON_NO_ROUTE.
+ //SendPaymentV2 attempts to route a payment described by the passed
+ //PaymentRequest to the final destination. The call returns a stream of
+ //payment updates. When using this RPC, make sure to set a fee limit, as the
+ //default routing fee limit is 0 sats. Without a non-zero fee limit only
+ //routes without fees will be attempted which often fails with
+ //FAILURE_REASON_NO_ROUTE.
SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error
// lncli: `trackpayment`
- // TrackPaymentV2 returns an update stream for the payment identified by the
- // payment hash.
+ //TrackPaymentV2 returns an update stream for the payment identified by the
+ //payment hash.
TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error
- // TrackPayments returns an update stream for every payment that is not in a
- // terminal state. Note that if payments are in-flight while starting a new
- // subscription, the start of the payment stream could produce out-of-order
- // and/or duplicate events. In order to get updates for every in-flight
- // payment attempt make sure to subscribe to this method before initiating any
- // payments.
+ //
+ //TrackPayments returns an update stream for every payment that is not in a
+ //terminal state. Note that if payments are in-flight while starting a new
+ //subscription, the start of the payment stream could produce out-of-order
+ //and/or duplicate events. In order to get updates for every in-flight
+ //payment attempt make sure to subscribe to this method before initiating any
+ //payments.
TrackPayments(*TrackPaymentsRequest, Router_TrackPaymentsServer) error
// lncli: `estimateroutefee`
- // 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.
+ //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.
EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error)
// lncli: `sendtoroute`
- // SendToRouteV2 attempts to make a payment via the specified route. This
- // method differs from SendPayment in that it allows users to specify a full
- // route manually. This can be used for things like rebalancing, and atomic
- // swaps.
+ //SendToRouteV2 attempts to make a payment via the specified route. This
+ //method differs from SendPayment in that it allows users to specify a full
+ //route manually. This can be used for things like rebalancing, and atomic
+ //swaps.
SendToRouteV2(context.Context, *SendToRouteRequest) (*lnrpc.HTLCAttempt, error)
// lncli: `resetmc`
- // ResetMissionControl clears all mission control state and starts with a clean
- // slate.
+ //ResetMissionControl clears all mission control state and starts with a clean
+ //slate.
ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error)
// lncli: `querymc`
- // QueryMissionControl exposes the internal mission control state to callers.
- // It is a development feature.
+ //QueryMissionControl exposes the internal mission control state to callers.
+ //It is a development feature.
QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error)
// lncli: `importmc`
- // XImportMissionControl is an experimental API that imports the state provided
- // to the internal mission control's state, using all results which are more
- // recent than our existing values. These values will only be imported
- // in-memory, and will not be persisted across restarts.
+ //XImportMissionControl is an experimental API that imports the state provided
+ //to the internal mission control's state, using all results which are more
+ //recent than our existing values. These values will only be imported
+ //in-memory, and will not be persisted across restarts.
XImportMissionControl(context.Context, *XImportMissionControlRequest) (*XImportMissionControlResponse, error)
// lncli: `getmccfg`
- // GetMissionControlConfig returns mission control's current config.
+ //GetMissionControlConfig returns mission control's current config.
GetMissionControlConfig(context.Context, *GetMissionControlConfigRequest) (*GetMissionControlConfigResponse, error)
// lncli: `setmccfg`
- // SetMissionControlConfig will set mission control's config, if the config
- // provided is valid.
+ //SetMissionControlConfig will set mission control's config, if the config
+ //provided is valid.
SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error)
// lncli: `queryprob`
- // Deprecated. QueryProbability returns the current success probability
- // estimate for a given node pair and amount. The call returns a zero success
- // probability if no channel is available or if the amount violates min/max
- // HTLC constraints.
+ //Deprecated. QueryProbability returns the current success probability
+ //estimate for a given node pair and amount. The call returns a zero success
+ //probability if no channel is available or if the amount violates min/max
+ //HTLC constraints.
QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error)
// lncli: `buildroute`
- // BuildRoute builds a fully specified route based on a list of hop public
- // keys. It retrieves the relevant channel policies from the graph in order to
- // calculate the correct fees and time locks.
- // Note that LND will use its default final_cltv_delta if no value is supplied.
- // Make sure to add the correct final_cltv_delta depending on the invoice
- // restriction. Moreover the caller has to make sure to provide the
- // payment_addr if the route is paying an invoice which signaled it.
+ //BuildRoute builds a fully specified route based on a list of hop public
+ //keys. It retrieves the relevant channel policies from the graph in order to
+ //calculate the correct fees and time locks.
+ //Note that LND will use its default final_cltv_delta if no value is supplied.
+ //Make sure to add the correct final_cltv_delta depending on the invoice
+ //restriction. Moreover the caller has to make sure to provide the
+ //payment_addr if the route is paying an invoice which signaled it.
BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error)
- // SubscribeHtlcEvents creates a uni-directional stream from the server to
- // the client which delivers a stream of htlc events.
+ //
+ //SubscribeHtlcEvents creates a uni-directional stream from the server to
+ //the client which delivers a stream of htlc events.
SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error
- // *
- // HtlcInterceptor dispatches a bi-directional streaming RPC in which
- // Forwarded HTLC requests are sent to the client and the client responds with
- // a boolean that tells LND if this htlc should be intercepted.
- // In case of interception, the htlc can be either settled, cancelled or
- // resumed later by using the ResolveHoldForward endpoint.
+ //*
+ //HtlcInterceptor dispatches a bi-directional streaming RPC in which
+ //Forwarded HTLC requests are sent to the client and the client responds with
+ //a boolean that tells LND if this htlc should be intercepted.
+ //In case of interception, the htlc can be either settled, cancelled or
+ //resumed later by using the ResolveHoldForward endpoint.
HtlcInterceptor(Router_HtlcInterceptorServer) error
// lncli: `updatechanstatus`
- // UpdateChanStatus attempts to manually set the state of a channel
- // (enabled, disabled, or auto). A manual "disable" request will cause the
- // channel to stay disabled until a subsequent manual request of either
- // "enable" or "auto".
+ //UpdateChanStatus attempts to manually set the state of a channel
+ //(enabled, disabled, or auto). A manual "disable" request will cause the
+ //channel to stay disabled until a subsequent manual request of either
+ //"enable" or "auto".
UpdateChanStatus(context.Context, *UpdateChanStatusRequest) (*UpdateChanStatusResponse, error)
- // XAddLocalChanAliases is an experimental API that creates a set of new
- // channel SCID alias mappings. The final total set of aliases in the manager
- // after the add operation is returned. This is only a locally stored alias,
- // and will not be communicated to the channel peer via any message. Therefore,
- // routing over such an alias will only work if the peer also calls this same
- // RPC on their end. If an alias already exists, an error is returned
+ //
+ //XAddLocalChanAliases is an experimental API that creates a set of new
+ //channel SCID alias mappings. The final total set of aliases in the manager
+ //after the add operation is returned. This is only a locally stored alias,
+ //and will not be communicated to the channel peer via any message. Therefore,
+ //routing over such an alias will only work if the peer also calls this same
+ //RPC on their end. If an alias already exists, an error is returned
XAddLocalChanAliases(context.Context, *AddAliasesRequest) (*AddAliasesResponse, error)
- // XDeleteLocalChanAliases is an experimental API that deletes a set of alias
- // mappings. The final total set of aliases in the manager after the delete
- // operation is returned. The deletion will not be communicated to the channel
- // peer via any message.
+ //
+ //XDeleteLocalChanAliases is an experimental API that deletes a set of alias
+ //mappings. The final total set of aliases in the manager after the delete
+ //operation is returned. The deletion will not be communicated to the channel
+ //peer via any message.
XDeleteLocalChanAliases(context.Context, *DeleteAliasesRequest) (*DeleteAliasesResponse, error)
- // XFindBaseLocalChanAlias is an experimental API that looks up the base scid
- // for a local chan alias that was registered during the current runtime.
+ //
+ //XFindBaseLocalChanAlias is an experimental API that looks up the base scid
+ //for a local chan alias that was registered during the current runtime.
XFindBaseLocalChanAlias(context.Context, *FindBaseAliasRequest) (*FindBaseAliasResponse, error)
// lncli: `deletefwdhistory`
- // DeleteForwardingHistory allows the caller to delete forwarding history
- // events with a timestamp at or before a specified time. This is useful
- // for implementing data retention policies for privacy purposes. The call
- // deletes events in batches and returns statistics including the total number
- // of events deleted and the aggregate fees earned from those events. The
- // deletion is performed in a transaction-safe manner with configurable batch
- // sizes to avoid holding large database locks.
+ //DeleteForwardingHistory allows the caller to delete forwarding history
+ //events with a timestamp at or before a specified time. This is useful
+ //for implementing data retention policies for privacy purposes. The call
+ //deletes events in batches and returns statistics including the total number
+ //of events deleted and the aggregate fees earned from those events. The
+ //deletion is performed in a transaction-safe manner with configurable batch
+ //sizes to avoid holding large database locks.
DeleteForwardingHistory(context.Context, *DeleteForwardingHistoryRequest) (*DeleteForwardingHistoryResponse, error)
mustEmbedUnimplementedRouterServer()
}
### lnrpc/signrpc/signer.pb.go
@@ -24,17 +24,21 @@ const (
type SignMethod int32
const (
- // Specifies that a SegWit v0 (p2wkh, np2wkh, p2wsh) input script should be
- // signed.
+ //
+ //Specifies that a SegWit v0 (p2wkh, np2wkh, p2wsh) input script should be
+ //signed.
SignMethod_SIGN_METHOD_WITNESS_V0 SignMethod = 0
- // Specifies that a SegWit v1 (p2tr) input should be signed by using the
- // BIP0086 method (commit to internal key only).
+ //
+ //Specifies that a SegWit v1 (p2tr) input should be signed by using the
+ //BIP0086 method (commit to internal key only).
SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND_BIP0086 SignMethod = 1
- // 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.
+ //
+ //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.
SignMethod_SIGN_METHOD_TAPROOT_KEY_SPEND SignMethod = 2
- // Specifies that a SegWit v1 (p2tr) input should be spent using the script
- // path and that a specific leaf script should be signed for.
+ //
+ //Specifies that a SegWit v1 (p2tr) input should be spent using the script
+ //path and that a specific leaf script should be signed for.
SignMethod_SIGN_METHOD_TAPROOT_SCRIPT_SPEND SignMethod = 3
)
@@ -84,15 +88,18 @@ func (SignMethod) EnumDescriptor() ([]byte, []int) {
type MuSig2Version int32
const (
- // The default value on the RPC is zero for enums so we need to represent an
- // invalid/undefined version by default to make sure clients upgrade their
- // software to set the version explicitly.
+ //
+ //The default value on the RPC is zero for enums so we need to represent an
+ //invalid/undefined version by default to make sure clients upgrade their
+ //software to set the version explicitly.
MuSig2Version_MUSIG2_VERSION_UNDEFINED MuSig2Version = 0
- // The version of MuSig2 that lnd 0.15.x shipped with, which corresponds to the
- // version v0.4.0 of the MuSig2 BIP draft.
+ //
+ //The version of MuSig2 that lnd 0.15.x shipped with, which corresponds to the
+ //version v0.4.0 of the MuSig2 BIP draft.
MuSig2Version_MUSIG2_VERSION_V040 MuSig2Version = 1
- // The current version of MuSig2 which corresponds to the version v1.0.0rc2 of
- // the MuSig2 BIP draft.
+ //
+ //The current version of MuSig2 which corresponds to the version v1.0.0rc2 of
+ //the MuSig2 BIP draft.
MuSig2Version_MUSIG2_VERSION_V100RC2 MuSig2Version = 2
)
@@ -193,11 +200,13 @@ func (x *KeyLocator) GetKeyIndex() int32 {
type KeyDescriptor struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The raw bytes of the public key in the key pair being identified. Either
- // this or the KeyLocator must be specified.
+ //
+ //The raw bytes of the public key in the key pair being identified. Either
+ //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"`
- // 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.
+ //
+ //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.
KeyLoc *KeyLocator `protobuf:"bytes,2,opt,name=key_loc,json=keyLoc,proto3" json:"key_loc,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -303,56 +312,65 @@ func (x *TxOut) GetPkScript() []byte {
type SignDescriptor struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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.
//
- // 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.
+ //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.
+ //
+ //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"`
- // 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.
- // This value is typically derived via the following computation:
+ //
+ //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.
+ //This value is typically derived via the following computation:
//
// derivedKey = privkey + sha256(perCommitmentPoint || pubKey) mod N
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
- // 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
- // commitment secret from a previously revoked commitment transaction. This
- // value is in combination with two hash values, and the original private key
- // to derive the private key to be used when signing.
+ //
+ //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
+ //input. Within the Lightning protocol, this value is typically the
+ //commitment secret from a previously revoked commitment transaction. This
+ //value is in combination with two hash values, and the original private key
+ //to derive the private key to be used when signing.
//
// 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"`
- // 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).
//
- // When doing a BIP 86 spend, this field can be an empty byte slice.
+ //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).
+ //
+ //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"`
- // 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
- // taproot script path spend is being attempted, then this should be the raw
- // leaf script.
+ //
+ //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
+ //taproot script path spend is being attempted, then this should be the raw
+ //leaf script.
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
- // provided.
+ //
+ //A description of the output being spent. The value and script MUST be
+ //provided.
Output *TxOut `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"`
- // The target sighash type that should be used when generating the final
- // sighash, and signature.
+ //
+ //The target sighash type that should be used when generating the final
+ //sighash, and signature.
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"`
- // 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.
- // Defaults to SegWit v0 signing to be backward compatible with older RPC
- // clients.
+ //
+ //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.
+ //Defaults to SegWit v0 signing to be backward compatible with older RPC
+ //clients.
SignMethod SignMethod `protobuf:"varint,9,opt,name=sign_method,json=signMethod,proto3,enum=signrpc.SignMethod" json:"sign_method,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -457,8 +475,9 @@ type SignReq struct {
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.
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
- // is required when spending one or more taproot (SegWit v1) outputs.
+ //
+ //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.
PrevOutputs []*TxOut `protobuf:"bytes,3,rep,name=prev_outputs,json=prevOutputs,proto3" json:"prev_outputs,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -517,8 +536,9 @@ func (x *SignReq) GetPrevOutputs() []*TxOut {
type SignResp struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // A set of signatures realized in a fixed 64-byte format ordered in ascending
- // input order.
+ //
+ //A set of signatures realized in a fixed 64-byte format ordered in ascending
+ //input order.
RawSigs [][]byte `protobuf:"bytes,1,rep,name=raw_sigs,json=rawSigs,proto3" json:"raw_sigs,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -565,8 +585,9 @@ type InputScript struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The serializes witness stack for the specified input.
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 input specified is a nested p2sh witness program.
+ //
+ //The optional sig script for the specified witness that will only be set if
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -663,24 +684,29 @@ func (x *InputScriptResp) GetInputScripts() []*InputScript {
type SignMessageReq struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The message to be signed. When using REST, this field must be encoded as
- // base64.
+ //
+ //The message to be signed. When using REST, this field must be encoded as
+ //base64.
Msg []byte `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
// 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"`
// 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"`
- // Use the compact (pubkey recoverable) format instead of the raw lnwire
- // format. This option cannot be used with Schnorr signatures.
+ //
+ //Use the compact (pubkey recoverable) format instead of the raw lnwire
+ //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"`
- // 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"`
- // 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:
- // privKey + h_tapTweak(internalKey || tapTweak)
+ //
+ //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:
+ //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"`
- // An optional tag that can be provided when taking a tagged hash of a
- // message. This option can only be used when schnorr_sig is true.
+ //
+ //An optional tag that can be provided when taking a tagged hash of a
+ //message. This option can only be used when schnorr_sig is true.
Tag []byte `protobuf:"bytes,7,opt,name=tag,proto3" json:"tag,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -767,7 +793,8 @@ func (x *SignMessageReq) GetTag() []byte {
type SignMessageResp struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -815,18 +842,22 @@ type VerifyMessageReq struct {
// The message over which the signature is to be verified. When using
// REST, this field must be encoded as base64.
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
- // message. When using REST, this field must be encoded as base64.
+ //
+ //The fixed-size LN wire encoded signature to be verified over the given
+ //message. When using REST, this field must be encoded as base64.
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
- // 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
- // according to BIP-340.
+ //
+ //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
+ //the public key is expected to be in the 32-byte x-only serialization
+ //according to BIP-340.
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"`
- // An optional tag that can be provided when taking a tagged hash of a
- // message. This option can only be used when is_schnorr_sig is true.
+ //
+ //An optional tag that can be provided when taking a tagged hash of a
+ //message. This option can only be used when is_schnorr_sig is true.
Tag []byte `protobuf:"bytes,5,opt,name=tag,proto3" json:"tag,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -946,15 +977,17 @@ type SharedKeyRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// 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"`
- // 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
- // 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
+ //used.
//
// Deprecated: Marked as deprecated in signrpc/signer.proto.
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
- // locator or a raw public key is expected, if neither is supplied, defaults to
- // the node's identity private 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
+ //the node's identity private key.
KeyDesc *KeyDescriptor `protobuf:"bytes,3,opt,name=key_desc,json=keyDesc,proto3" json:"key_desc,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1059,11 +1092,13 @@ func (x *SharedKeyResponse) GetSharedKey() []byte {
type TweakDesc struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // 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
- // key before the tweaking operation is applied.
+ //
+ //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
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1115,16 +1150,18 @@ func (x *TweakDesc) GetIsXOnly() bool {
type TaprootTweakDesc struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // 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
- // 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.
+ //
+ //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
+ //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
+ //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.
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
- // is a BIP-0086 key spend only commitment where only the internal key is
- // committed to instead of also including a script root hash.
+ //
+ //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
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1176,22 +1213,26 @@ func (x *TaprootTweakDesc) GetKeySpendOnly() bool {
type MuSig2CombineKeysRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // A list of all public keys (serialized in 32-byte x-only format for v0.4.0
- // and 33-byte compressed format for v1.0.0rc2!) participating in the signing
- // session. The list will always be sorted lexicographically internally. This
- // must include the local key which is described by the above key_loc.
+ //
+ //A list of all public keys (serialized in 32-byte x-only format for v0.4.0
+ //and 33-byte compressed format for v1.0.0rc2!) participating in the signing
+ //session. The list will always be sorted lexicographically internally. This
+ //must include the local key which is described by the above key_loc.
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 aggregated
- // public key.
+ //
+ //A series of optional generic tweaks to be applied to the aggregated
+ //public key.
Tweaks []*TweakDesc `protobuf:"bytes,2,rep,name=tweaks,proto3" json:"tweaks,omitempty"`
- // 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
- // on-chain.
+ //
+ //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
+ //on-chain.
TaprootTweak *TaprootTweakDesc `protobuf:"bytes,3,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"`
- // The mandatory version of the MuSig2 BIP draft to use. This is necessary to
- // differentiate between the changes that were made to the BIP while this
- // experimental RPC was already released. Some of those changes affect how the
- // combined key and nonces are created.
+ //
+ //The mandatory version of the MuSig2 BIP draft to use. This is necessary to
+ //differentiate between the changes that were made to the BIP while this
+ //experimental RPC was already released. Some of those changes affect how the
+ //combined key and nonces are created.
Version MuSig2Version `protobuf:"varint,4,opt,name=version,proto3,enum=signrpc.MuSig2Version" json:"version,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1257,16 +1298,19 @@ func (x *MuSig2CombineKeysRequest) GetVersion() MuSig2Version {
type MuSig2CombineKeysResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // taproot key that can be put into the on-chain output.
+ //
+ //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
+ //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"`
- // 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
- // internal key that needs to be put into the witness if the script spend path
- // is used.
+ //
+ //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
+ //internal key that needs to be put into the witness if the script spend path
+ //is used.
TaprootInternalKey []byte `protobuf:"bytes,2,opt,name=taproot_internal_key,json=taprootInternalKey,proto3" json:"taproot_internal_key,omitempty"`
- // The version of the MuSig2 BIP that was used to combine the keys.
+ //
+ //The version of the MuSig2 BIP that was used to combine the keys.
Version MuSig2Version `protobuf:"varint,4,opt,name=version,proto3,enum=signrpc.MuSig2Version" json:"version,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1325,34 +1369,41 @@ func (x *MuSig2CombineKeysResponse) GetVersion() MuSig2Version {
type MuSig2SessionRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // A list of all public keys (serialized in 32-byte x-only format for v0.4.0
- // and 33-byte compressed format for v1.0.0rc2!) participating in the signing
- // session. The list will always be sorted lexicographically internally. This
- // must include the local key which is described by the above key_loc.
+ //
+ //A list of all public keys (serialized in 32-byte x-only format for v0.4.0
+ //and 33-byte compressed format for v1.0.0rc2!) participating in the signing
+ //session. The list will always be sorted lexicographically internally. This
+ //must include the local key which is described by the above key_loc.
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
- // might already be known.
+ //
+ //An optional list of all public nonces of other signing participants that
+ //might already be known.
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 aggregated
- // public key.
+ //
+ //A series of optional generic tweaks to be applied to the aggregated
+ //public key.
Tweaks []*TweakDesc `protobuf:"bytes,4,rep,name=tweaks,proto3" json:"tweaks,omitempty"`
- // 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
- // on-chain.
+ //
+ //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
+ //on-chain.
TaprootTweak *TaprootTweakDesc `protobuf:"bytes,5,opt,name=taproot_tweak,json=taprootTweak,proto3" json:"taproot_tweak,omitempty"`
- // The mandatory version of the MuSig2 BIP draft to use. This is necessary to
- // differentiate between the changes that were made to the BIP while this
- // experimental RPC was already released. Some of those changes affect how the
- // combined key and nonces are created.
+ //
+ //The mandatory version of the MuSig2 BIP draft to use. This is necessary to
+ //differentiate between the changes that were made to the BIP while this
+ //experimental RPC was already released. Some of those changes affect how the
+ //combined key and nonces are created.
Version MuSig2Version `protobuf:"varint,6,opt,name=version,proto3,enum=signrpc.MuSig2Version" json:"version,omitempty"`
- // A set of pre generated secret local nonces to use in the musig2 session.
- // This field is optional. This can be useful for protocols that need to send
- // nonces ahead of time before the set of signer keys are known. This value
- // MUST be 97 bytes and be the concatenation of two CSPRNG generated 32 byte
- // values and local public key used for signing as specified in the key_loc
- // field.
+ //
+ //A set of pre generated secret local nonces to use in the musig2 session.
+ //This field is optional. This can be useful for protocols that need to send
+ //nonces ahead of time before the set of signer keys are known. This value
+ //MUST be 97 bytes and be the concatenation of two CSPRNG generated 32 byte
+ //values and local public key used for signing as specified in the key_loc
+ //field.
PregeneratedLocalNonce []byte `protobuf:"bytes,7,opt,name=pregenerated_local_nonce,json=pregeneratedLocalNonce,proto3" json:"pregenerated_local_nonce,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1439,27 +1490,33 @@ func (x *MuSig2SessionRequest) GetPregeneratedLocalNonce() []byte {
type MuSig2SessionResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // reason, a new session with the same participants needs to be created.
+ //
+ //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
+ //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"`
- // 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
- // taproot key that can be put into the on-chain output.
+ //
+ //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
+ //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"`
- // 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
- // internal key that needs to be put into the witness if the script spend path
- // is used.
+ //
+ //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
+ //internal key that needs to be put into the witness if the script spend path
+ //is used.
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
- // of 66 bytes. Can be split into the two 33-byte points to get the individual
- // nonces.
+ //
+ //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
+ //nonces.
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
- // now.
+ //
+ //Indicates whether all nonces required to start the signing process are known
+ //now.
HaveAllNonces bool `protobuf:"varint,5,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"`
- // The version of the MuSig2 BIP that was used to create the session.
+ //
+ //The version of the MuSig2 BIP that was used to create the session.
Version MuSig2Version `protobuf:"varint,6,opt,name=version,proto3,enum=signrpc.MuSig2Version" json:"version,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1539,10 +1596,12 @@ func (x *MuSig2SessionResponse) GetVersion() MuSig2Version {
type MuSig2RegisterNoncesRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // A list of all public nonces of other signing participants that should be
- // registered.
+ //
+ //A list of all public nonces of other signing participants that should be
+ //registered.
OtherSignerPublicNonces [][]byte `protobuf:"bytes,3,rep,name=other_signer_public_nonces,json=otherSignerPublicNonces,proto3" json:"other_signer_public_nonces,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1594,8 +1653,9 @@ func (x *MuSig2RegisterNoncesRequest) GetOtherSignerPublicNonces() [][]byte {
type MuSig2RegisterNoncesResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Indicates whether all nonces required to start the signing process are known
- // now.
+ //
+ //Indicates whether all nonces required to start the signing process are known
+ //now.
HaveAllNonces bool `protobuf:"varint,1,opt,name=have_all_nonces,json=haveAllNonces,proto3" json:"have_all_nonces,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1640,11 +1700,13 @@ func (x *MuSig2RegisterNoncesResponse) GetHaveAllNonces() bool {
type MuSig2RegisterCombinedNonceRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The unique ID of the signing session the combined nonce should be registered
- // with.
+ //
+ //The unique ID of the signing session the combined nonce should be registered
+ //with.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
- // The 66-byte combined public nonce that was aggregated externally. This is a
- // concatenation of two 33-byte compressed public keys (R1 || R2).
+ //
+ //The 66-byte combined public nonce that was aggregated externally. This is a
+ //concatenation of two 33-byte compressed public keys (R1 || R2).
CombinedPublicNonce []byte `protobuf:"bytes,2,opt,name=combined_public_nonce,json=combinedPublicNonce,proto3" json:"combined_public_nonce,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1732,7 +1794,8 @@ func (*MuSig2RegisterCombinedNonceResponse) Descriptor() ([]byte, []int) {
type MuSig2GetCombinedNonceRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The unique ID of the signing session to get the combined nonce for.
+ //
+ //The unique ID of the signing session to get the combined nonce for.
SessionId []byte `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1777,8 +1840,9 @@ func (x *MuSig2GetCombinedNonceRequest) GetSessionId() []byte {
type MuSig2GetCombinedNonceResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The 66-byte combined public nonce. This is a concatenation of two 33-byte
- // compressed public keys (R1 || R2).
+ //
+ //The 66-byte combined public nonce. This is a concatenation of two 33-byte
+ //compressed public keys (R1 || R2).
CombinedPublicNonce []byte `protobuf:"bytes,1,opt,name=combined_public_nonce,json=combinedPublicNonce,proto3" json:"combined_public_nonce,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1823,13 +1887,16 @@ func (x *MuSig2GetCombinedNonceResponse) GetCombinedPublicNonce() []byte {
type MuSig2SignRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // 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"`
- // Cleanup indicates that after signing, the session state can be cleaned up,
- // since another participant is going to be responsible for combining the
- // partial signatures.
+ //
+ //Cleanup indicates that after signing, the session state can be cleaned up,
+ //since another participant is going to be responsible for combining the
+ //partial signatures.
Cleanup bool `protobuf:"varint,3,opt,name=cleanup,proto3" json:"cleanup,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1888,7 +1955,8 @@ func (x *MuSig2SignRequest) GetCleanup() bool {
type MuSig2SignResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1933,10 +2001,12 @@ func (x *MuSig2SignResponse) GetLocalPartialSignature() []byte {
type MuSig2CombineSigRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // The list of all other participants' partial signatures to add to the current
- // session.
+ //
+ //The list of all other participants' partial signatures to add to the current
+ //session.
OtherPartialSignatures [][]byte `protobuf:"bytes,2,rep,name=other_partial_signatures,json=otherPartialSignatures,proto3" json:"other_partial_signatures,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1988,11 +2058,13 @@ func (x *MuSig2CombineSigRequest) GetOtherPartialSignatures() [][]byte {
type MuSig2CombineSigResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // set, otherwise it is empty.
+ //
+ //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
+ //set, otherwise it is empty.
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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2044,7 +2116,8 @@ func (x *MuSig2CombineSigResponse) GetFinalSignature() []byte {
type MuSig2CleanupRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/signrpc/signer_grpc.pb.go
@@ -18,125 +18,138 @@ 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.
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).
- //
- // If we are unable to sign using the specified keys, then an error will be
- // returned.
+ //
+ //SignOutputRaw is a method that can be used to generated a signature for a
+ //set of inputs/outputs to a transaction. Each request specifies details
+ //concerning how the outputs should be signed, which keys they should be
+ //signed with, and also any optional tweaks. The return value is a fixed
+ //64-byte signature (the same format as we use on the wire in Lightning).
+ //
+ //If we are unable to sign using the specified keys, then an error will be
+ //returned.
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.
- //
- // 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 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.
+ //
+ //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)
- // SignMessage signs a message with the key specified in the key locator. The
- // returned signature is fixed-size LN wire format encoded.
//
- // The main difference to SignMessage in the main RPC is that a specific key is
- // used to sign the message instead of the node identity private key.
+ //SignMessage signs a message with the key specified in the key locator. The
+ //returned signature is fixed-size LN wire format encoded.
+ //
+ //The main difference to SignMessage in the main RPC is that a specific key is
+ //used to sign the message instead of the node identity private key.
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.
//
- // 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 verifies a signature over a message using the public key
+ //provided. The signature must be fixed-size LN wire format encoded.
+ //
+ //The main difference to VerifyMessage in the main RPC is that the public key
+ //used to sign the message does not have to be a node known to the network.
VerifyMessage(ctx context.Context, in *VerifyMessageReq, opts ...grpc.CallOption) (*VerifyMessageResp, error)
- // DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
- // derivation between the ephemeral public key in the request and the node's
- // key specified in the key_desc parameter. Either a key locator or a raw
- // public key is expected in the key_desc, if neither is supplied, defaults to
- // the node's identity private key:
- // P_shared = privKeyNode * ephemeralPubkey
- // The resulting shared public key is serialized in the compressed format and
- // hashed with sha256, resulting in the final key length of 256bit.
+ //
+ //DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
+ //derivation between the ephemeral public key in the request and the node's
+ //key specified in the key_desc parameter. Either a key locator or a raw
+ //public key is expected in the key_desc, if neither is supplied, defaults to
+ //the node's identity private key:
+ //P_shared = privKeyNode * ephemeralPubkey
+ //The resulting shared public key is serialized in the compressed format and
+ //hashed with sha256, resulting in the final key length of 256bit.
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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
//
- // 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 (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.
+ //
+ //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)
- // MuSig2RegisterCombinedNonce (experimental!) registers a pre-aggregated
- // combined nonce for a signing session. This is an alternative to
- // MuSig2RegisterNonces and is used when a coordinator has already aggregated
- // all individual nonces and wants to distribute the combined nonce to
- // participants.
- //
- // NOTE: This method is mutually exclusive with MuSig2RegisterNonces for the
- // same session. 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!
+ //
+ //MuSig2RegisterCombinedNonce (experimental!) registers a pre-aggregated
+ //combined nonce for a signing session. This is an alternative to
+ //MuSig2RegisterNonces and is used when a coordinator has already aggregated
+ //all individual nonces and wants to distribute the combined nonce to
+ //participants.
+ //
+ //NOTE: This method is mutually exclusive with MuSig2RegisterNonces for the
+ //same session. 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!
MuSig2RegisterCombinedNonce(ctx context.Context, in *MuSig2RegisterCombinedNonceRequest, opts ...grpc.CallOption) (*MuSig2RegisterCombinedNonceResponse, error)
- // MuSig2GetCombinedNonce (experimental!) retrieves the combined nonce for a
- // signing session. This will be available after either all individual nonces
- // have been registered via MuSig2RegisterNonces, or a combined nonce has been
- // registered via MuSig2RegisterCombinedNonce.
- //
- // 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!
+ //
+ //MuSig2GetCombinedNonce (experimental!) retrieves the combined nonce for a
+ //signing session. This will be available after either all individual nonces
+ //have been registered via MuSig2RegisterNonces, or a combined nonce has been
+ //registered via MuSig2RegisterCombinedNonce.
+ //
+ //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!
MuSig2GetCombinedNonce(ctx context.Context, in *MuSig2GetCombinedNonceRequest, opts ...grpc.CallOption) (*MuSig2GetCombinedNonceResponse, 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
//
- // 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 (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.
+ //
+ //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)
}
@@ -269,125 +282,138 @@ func (c *signerClient) MuSig2Cleanup(ctx context.Context, in *MuSig2CleanupReque
// All implementations must embed UnimplementedSignerServer
// for forward compatibility
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).
- //
- // If we are unable to sign using the specified keys, then an error will be
- // returned.
+ //
+ //SignOutputRaw is a method that can be used to generated a signature for a
+ //set of inputs/outputs to a transaction. Each request specifies details
+ //concerning how the outputs should be signed, which keys they should be
+ //signed with, and also any optional tweaks. The return value is a fixed
+ //64-byte signature (the same format as we use on the wire in Lightning).
+ //
+ //If we are unable to sign using the specified keys, then an error will be
+ //returned.
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.
- //
- // 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 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.
+ //
+ //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)
- // SignMessage signs a message with the key specified in the key locator. The
- // returned signature is fixed-size LN wire format encoded.
//
- // The main difference to SignMessage in the main RPC is that a specific key is
- // used to sign the message instead of the node identity private key.
+ //SignMessage signs a message with the key specified in the key locator. The
+ //returned signature is fixed-size LN wire format encoded.
+ //
+ //The main difference to SignMessage in the main RPC is that a specific key is
+ //used to sign the message instead of the node identity private key.
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.
//
- // 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 verifies a signature over a message using the public key
+ //provided. The signature must be fixed-size LN wire format encoded.
+ //
+ //The main difference to VerifyMessage in the main RPC is that the public key
+ //used to sign the message does not have to be a node known to the network.
VerifyMessage(context.Context, *VerifyMessageReq) (*VerifyMessageResp, error)
- // DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
- // derivation between the ephemeral public key in the request and the node's
- // key specified in the key_desc parameter. Either a key locator or a raw
- // public key is expected in the key_desc, if neither is supplied, defaults to
- // the node's identity private key:
- // P_shared = privKeyNode * ephemeralPubkey
- // The resulting shared public key is serialized in the compressed format and
- // hashed with sha256, resulting in the final key length of 256bit.
+ //
+ //DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
+ //derivation between the ephemeral public key in the request and the node's
+ //key specified in the key_desc parameter. Either a key locator or a raw
+ //public key is expected in the key_desc, if neither is supplied, defaults to
+ //the node's identity private key:
+ //P_shared = privKeyNode * ephemeralPubkey
+ //The resulting shared public key is serialized in the compressed format and
+ //hashed with sha256, resulting in the final key length of 256bit.
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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
//
- // 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 (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.
+ //
+ //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)
- // MuSig2RegisterCombinedNonce (experimental!) registers a pre-aggregated
- // combined nonce for a signing session. This is an alternative to
- // MuSig2RegisterNonces and is used when a coordinator has already aggregated
- // all individual nonces and wants to distribute the combined nonce to
- // participants.
- //
- // NOTE: This method is mutually exclusive with MuSig2RegisterNonces for the
- // same session. 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!
+ //
+ //MuSig2RegisterCombinedNonce (experimental!) registers a pre-aggregated
+ //combined nonce for a signing session. This is an alternative to
+ //MuSig2RegisterNonces and is used when a coordinator has already aggregated
+ //all individual nonces and wants to distribute the combined nonce to
+ //participants.
+ //
+ //NOTE: This method is mutually exclusive with MuSig2RegisterNonces for the
+ //same session. 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!
MuSig2RegisterCombinedNonce(context.Context, *MuSig2RegisterCombinedNonceRequest) (*MuSig2RegisterCombinedNonceResponse, error)
- // MuSig2GetCombinedNonce (experimental!) retrieves the combined nonce for a
- // signing session. This will be available after either all individual nonces
- // have been registered via MuSig2RegisterNonces, or a combined nonce has been
- // registered via MuSig2RegisterCombinedNonce.
- //
- // 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!
+ //
+ //MuSig2GetCombinedNonce (experimental!) retrieves the combined nonce for a
+ //signing session. This will be available after either all individual nonces
+ //have been registered via MuSig2RegisterNonces, or a combined nonce has been
+ //registered via MuSig2RegisterCombinedNonce.
+ //
+ //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!
MuSig2GetCombinedNonce(context.Context, *MuSig2GetCombinedNonceRequest) (*MuSig2GetCombinedNonceResponse, 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
- //
- // 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 (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.
+ //
+ //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)
- // 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.
//
- // 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 (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.
+ //
+ //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)
mustEmbedUnimplementedSignerServer()
}
### lnrpc/verrpc/verrpc_grpc.pb.go
@@ -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.
type VersionerClient interface {
// lncli: `version`
- // GetVersion returns the current version and build information of the running
- // daemon.
+ //GetVersion returns the current version and build information of the running
+ //daemon.
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
type VersionerServer interface {
// lncli: `version`
- // GetVersion returns the current version and build information of the running
- // daemon.
+ //GetVersion returns the current version and build information of the running
+ //daemon.
GetVersion(context.Context, *VersionRequest) (*Version, error)
mustEmbedUnimplementedVersionerServer()
}
### lnrpc/walletrpc/walletkit.pb.go
@@ -82,170 +82,212 @@ type WitnessType int32
const (
WitnessType_UNKNOWN_WITNESS WitnessType = 0
- // A witness that allows us to spend the output of a commitment transaction
- // after a relative lock-time lockout.
+ //
+ //A witness that allows us to spend the output of a commitment transaction
+ //after a relative lock-time lockout.
WitnessType_COMMITMENT_TIME_LOCK WitnessType = 1
- // A witness that allows us to spend a settled no-delay output immediately on a
- // counterparty's commitment transaction.
+ //
+ //A witness that allows us to spend a settled no-delay output immediately on a
+ //counterparty's commitment transaction.
WitnessType_COMMITMENT_NO_DELAY WitnessType = 2
- // A witness that allows us to sweep the settled output of a malicious
- // counterparty's who broadcasts a revoked commitment transaction.
+ //
+ //A witness that allows us to sweep the settled output of a malicious
+ //counterparty's who broadcasts a revoked commitment transaction.
WitnessType_COMMITMENT_REVOKE WitnessType = 3
- // 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.
+ //
+ //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.
WitnessType_HTLC_OFFERED_REVOKE WitnessType = 4
- // 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.
+ //
+ //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.
WitnessType_HTLC_ACCEPTED_REVOKE WitnessType = 5
- // 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
- // 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.
+ //
+ //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
+ //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.
WitnessType_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL WitnessType = 6
- // 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
- // commitment transaction, but is the result of confirmed second-level HTLC
- // transaction. As a result, we can only spend this after a CSV delay.
+ //
+ //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
+ //commitment transaction, but is the result of confirmed second-level HTLC
+ //transaction. As a result, we can only spend this after a CSV delay.
WitnessType_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL WitnessType = 7
- // 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
- // spend this output after the absolute CLTV timeout of the HTLC as passed.
+ //
+ //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
+ //spend this output after the absolute CLTV timeout of the HTLC as passed.
WitnessType_HTLC_OFFERED_REMOTE_TIMEOUT WitnessType = 8
- // 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
- // chain, and we know the pre-image to the HTLC. We can sweep this without any
- // additional timeout.
+ //
+ //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
+ //chain, and we know the pre-image to the HTLC. We can sweep this without any
+ //additional timeout.
WitnessType_HTLC_ACCEPTED_REMOTE_SUCCESS WitnessType = 9
- // 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
- // also immediately attempt to go to the second level to claim the HTLC.
+ //
+ //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
+ //also immediately attempt to go to the second level to claim the HTLC.
WitnessType_HTLC_SECOND_LEVEL_REVOKE WitnessType = 10
- // 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.
+ //
+ //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.
WitnessType_WITNESS_KEY_HASH WitnessType = 11
- // 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.
+ //
+ //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.
WitnessType_NESTED_WITNESS_KEY_HASH WitnessType = 12
- // A witness type that allows us to spend our anchor on the commitment
- // transaction.
+ //
+ //A witness type that allows us to spend our anchor on the commitment
+ //transaction.
WitnessType_COMMITMENT_ANCHOR WitnessType = 13
- // A witness type that is similar to the COMMITMENT_NO_DELAY type,
- // but it omits the tweak that randomizes the key we need to
- // spend with a channel peer supplied set of randomness.
+ //
+ //A witness type that is similar to the COMMITMENT_NO_DELAY type,
+ //but it omits the tweak that randomizes the key we need to
+ //spend with a channel peer supplied set of randomness.
WitnessType_COMMITMENT_NO_DELAY_TWEAKLESS WitnessType = 14
- // A witness type that allows us to spend our output on the counterparty's
- // commitment transaction after a confirmation.
+ //
+ //A witness type that allows us to spend our output on the counterparty's
+ //commitment transaction after a confirmation.
WitnessType_COMMITMENT_TO_REMOTE_CONFIRMED WitnessType = 15
- // A witness type that allows us to sweep an HTLC output that we extended
- // to a party, but was never fulfilled. This _is_ the HTLC output directly
- // on our commitment transaction, and the input to the second-level HTLC
- // timeout transaction. It can only be spent after CLTV expiry, and
- // commitment confirmation.
+ //
+ //A witness type that allows us to sweep an HTLC output that we extended
+ //to a party, but was never fulfilled. This _is_ the HTLC output directly
+ //on our commitment transaction, and the input to the second-level HTLC
+ //timeout transaction. It can only be spent after CLTV expiry, and
+ //commitment confirmation.
WitnessType_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_INPUT_CONFIRMED WitnessType = 16
- // A witness type that allows us to sweep an HTLC output that was offered
- // to us, and for which we have a payment preimage. This _is_ the HTLC
- // output directly on our commitment transaction, and the input to the
- // second-level HTLC success transaction. It can only be spent after the
- // commitment has confirmed.
+ //
+ //A witness type that allows us to sweep an HTLC output that was offered
+ //to us, and for which we have a payment preimage. This _is_ the HTLC
+ //output directly on our commitment transaction, and the input to the
+ //second-level HTLC success transaction. It can only be spent after the
+ //commitment has confirmed.
WitnessType_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_INPUT_CONFIRMED WitnessType = 17
- // A witness type that allows us to spend our output on our local
- // commitment transaction after a relative and absolute lock-time lockout as
- // part of the script enforced lease commitment type.
+ //
+ //A witness type that allows us to spend our output on our local
+ //commitment transaction after a relative and absolute lock-time lockout as
+ //part of the script enforced lease commitment type.
WitnessType_LEASE_COMMITMENT_TIME_LOCK WitnessType = 18
- // A witness type that allows us to spend our output on the counterparty's
- // commitment transaction after a confirmation and absolute locktime as part
- // of the script enforced lease commitment type.
+ //
+ //A witness type that allows us to spend our output on the counterparty's
+ //commitment transaction after a confirmation and absolute locktime as part
+ //of the script enforced lease commitment type.
WitnessType_LEASE_COMMITMENT_TO_REMOTE_CONFIRMED WitnessType = 19
- // A witness type 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 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
- // and CLTV locktime as part of the script enforced lease commitment type.
+ //
+ //A witness type 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 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
+ //and CLTV locktime as part of the script enforced lease commitment type.
WitnessType_LEASE_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL WitnessType = 20
- // A witness type 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 commitment transaction, but is the result of confirmed
- // second-level HTLC transaction. As a result, we can only spend this after
- // a CSV delay and CLTV locktime as part of the script enforced lease
- // commitment type.
+ //
+ //A witness type 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 commitment transaction, but is the result of confirmed
+ //second-level HTLC transaction. As a result, we can only spend this after
+ //a CSV delay and CLTV locktime as part of the script enforced lease
+ //commitment type.
WitnessType_LEASE_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL WitnessType = 21
- // A witness type that allows us to spend a regular p2tr output that's sent
- // to an output which is under complete control of the backing wallet.
+ //
+ //A witness type that allows us to spend a regular p2tr output that's sent
+ //to an output which is under complete control of the backing wallet.
WitnessType_TAPROOT_PUB_KEY_SPEND WitnessType = 22
- // A witness type that allows us to spend our settled local commitment after a
- // CSV delay when we force close the channel.
+ //
+ //A witness type that allows us to spend our settled local commitment after a
+ //CSV delay when we force close the channel.
WitnessType_TAPROOT_LOCAL_COMMIT_SPEND WitnessType = 23
- // A witness type that allows us to spend our settled local commitment after
- // a CSV delay when the remote party has force closed the channel.
+ //
+ //A witness type that allows us to spend our settled local commitment after
+ //a CSV delay when the remote party has force closed the channel.
WitnessType_TAPROOT_REMOTE_COMMIT_SPEND WitnessType = 24
- // A witness type that we'll use for spending our own anchor output.
+ //
+ //A witness type that we'll use for spending our own anchor output.
WitnessType_TAPROOT_ANCHOR_SWEEP_SPEND WitnessType = 25
- // A witness that allows us to timeout an HTLC we offered to the remote party
- // on our commitment transaction. We use this when we need to go on chain to
- // time out an HTLC.
+ //
+ //A witness that allows us to timeout an HTLC we offered to the remote party
+ //on our commitment transaction. We use this when we need to go on chain to
+ //time out an HTLC.
WitnessType_TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL WitnessType = 26
- // A witness type that allows us to sweep an HTLC we accepted on our commitment
- // transaction after we go to the second level on chain.
+ //
+ //A witness type that allows us to sweep an HTLC we accepted on our commitment
+ //transaction after we go to the second level on chain.
WitnessType_TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL WitnessType = 27
- // A witness that allows us to sweep an HTLC on the revoked transaction of the
- // remote party that goes to the second level.
+ //
+ //A witness that allows us to sweep an HTLC on the revoked transaction of the
+ //remote party that goes to the second level.
WitnessType_TAPROOT_HTLC_SECOND_LEVEL_REVOKE WitnessType = 28
- // A witness that allows us to sweep an HTLC sent to us by the remote party
- // in the event that they broadcast a revoked state.
+ //
+ //A witness that allows us to sweep an HTLC sent to us by the remote party
+ //in the event that they broadcast a revoked state.
WitnessType_TAPROOT_HTLC_ACCEPTED_REVOKE WitnessType = 29
- // A witness that allows us to sweep an HTLC we offered to the remote party if
- // they broadcast a revoked commitment.
+ //
+ //A witness that allows us to sweep an HTLC we offered to the remote party if
+ //they broadcast a revoked commitment.
WitnessType_TAPROOT_HTLC_OFFERED_REVOKE WitnessType = 30
- // A witness that allows us to sweep an HTLC we offered to the remote party
- // that lies on the commitment transaction for the remote party. We can spend
- // this output after the absolute CLTV timeout of the HTLC as passed.
+ //
+ //A witness that allows us to sweep an HTLC we offered to the remote party
+ //that lies on the commitment transaction for the remote party. We can spend
+ //this output after the absolute CLTV timeout of the HTLC as passed.
WitnessType_TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT WitnessType = 31
- // A witness type that allows us to sign the second level HTLC timeout
- // transaction when spending from an HTLC residing on our local commitment
- // transaction.
- // This is used by the sweeper to re-sign inputs if it needs to aggregate
- // several second level HTLCs.
+ //
+ //A witness type that allows us to sign the second level HTLC timeout
+ //transaction when spending from an HTLC residing on our local commitment
+ //transaction.
+ //This is used by the sweeper to re-sign inputs if it needs to aggregate
+ //several second level HTLCs.
WitnessType_TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT WitnessType = 32
- // A witness that allows us to sweep an HTLC that was offered to us by the
- // remote party for a taproot channels. 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 additional timeout.
+ //
+ //A witness that allows us to sweep an HTLC that was offered to us by the
+ //remote party for a taproot channels. 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 additional timeout.
WitnessType_TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS WitnessType = 33
- // A witness type that allows us to sweep the HTLC offered to us on our local
- // commitment transaction. We'll use this when we need to go on chain to sweep
- // the HTLC. In this case, this is the second level HTLC success transaction.
+ //
+ //A witness type that allows us to sweep the HTLC offered to us on our local
+ //commitment transaction. We'll use this when we need to go on chain to sweep
+ //the HTLC. In this case, this is the second level HTLC success transaction.
WitnessType_TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS WitnessType = 34
- // A witness that allows us to sweep the settled output of a malicious
- // counterparty's who broadcasts a revoked taproot commitment transaction.
+ //
+ //A witness that allows us to sweep the settled output of a malicious
+ //counterparty's who broadcasts a revoked taproot commitment transaction.
WitnessType_TAPROOT_COMMITMENT_REVOKE WitnessType = 35
- // A witness type that allows us to spend our settled local commitment after a
- // CSV delay when we force close a production taproot channel.
+ //
+ //A witness type that allows us to spend our settled local commitment after a
+ //CSV delay when we force close a production taproot channel.
WitnessType_TAPROOT_LOCAL_COMMIT_SPEND_FINAL WitnessType = 36
- // A witness type that allows us to spend our settled local commitment after
- // a CSV delay when the remote party has force closed a production taproot
- // channel.
+ //
+ //A witness type that allows us to spend our settled local commitment after
+ //a CSV delay when the remote party has force closed a production taproot
+ //channel.
WitnessType_TAPROOT_REMOTE_COMMIT_SPEND_FINAL WitnessType = 37
- // A witness that allows us to timeout an HTLC we offered to the remote party
- // on our production taproot commitment transaction. We use this when we need
- // to go on chain to time out an HTLC.
+ //
+ //A witness that allows us to timeout an HTLC we offered to the remote party
+ //on our production taproot commitment transaction. We use this when we need
+ //to go on chain to time out an HTLC.
WitnessType_TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL WitnessType = 38
- // A witness type that allows us to sweep an HTLC we accepted on our
- // production taproot commitment transaction after we go to the second level
- // on chain.
+ //
+ //A witness type that allows us to sweep an HTLC we accepted on our
+ //production taproot commitment transaction after we go to the second level
+ //on chain.
WitnessType_TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL WitnessType = 39
- // A witness that allows us to sweep an HTLC we offered to the remote party
- // that lies on the production taproot commitment transaction for the remote
- // party. We can spend this output after the absolute CLTV timeout of the
- // HTLC as passed.
+ //
+ //A witness that allows us to sweep an HTLC we offered to the remote party
+ //that lies on the production taproot commitment transaction for the remote
+ //party. We can spend this output after the absolute CLTV timeout of the
+ //HTLC as passed.
WitnessType_TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL WitnessType = 40
- // A witness that allows us to sweep an HTLC that was offered to us by the
- // remote party for a production taproot channel. 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 additional timeout.
+ //
+ //A witness that allows us to sweep an HTLC that was offered to us by the
+ //remote party for a production taproot channel. 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 additional timeout.
WitnessType_TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL WitnessType = 41
- // A witness type that allows us to sweep the settled output of a malicious
- // counterparty's who broadcasts a revoked production taproot commitment
- // transaction.
+ //
+ //A witness type that allows us to sweep the settled output of a malicious
+ //counterparty's who broadcasts a revoked production taproot commitment
+ //transaction.
WitnessType_TAPROOT_COMMITMENT_REVOKE_FINAL WitnessType = 42
)
@@ -435,10 +477,11 @@ type ListUnspentRequest struct {
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.
Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"`
- // When min_confs and max_confs are zero, setting false implicitly
- // overrides max_confs to be MaxInt32, otherwise max_confs remains
- // zero. An error is returned if the value is true and both min_confs
- // and max_confs are non-zero. (default: false)
+ //
+ //When min_confs and max_confs are zero, setting false implicitly
+ //overrides max_confs to be MaxInt32, otherwise max_confs remains
+ //zero. An error is returned if the value is true and both min_confs
+ //and max_confs are non-zero. (default: false)
UnconfirmedOnly bool `protobuf:"varint,4,opt,name=unconfirmed_only,json=unconfirmedOnly,proto3" json:"unconfirmed_only,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -549,8 +592,9 @@ func (x *ListUnspentResponse) GetUtxos() []*lnrpc.Utxo {
type LeaseOutputRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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.
+ //
+ //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.
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// The identifying outpoint of the output being leased.
Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
@@ -628,9 +672,10 @@ func (x *LeaseOutputRequest) GetReleaseAfterSpendConfs() uint32 {
type LeaseOutputResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The absolute expiration of a time-controlled output lease represented as a
- // unix timestamp. Confirmation-controlled leases return the stored value for
- // compatibility but do not apply it.
+ //
+ //The absolute expiration of a time-controlled output lease represented as a
+ //unix timestamp. Confirmation-controlled leases return the stored value for
+ //compatibility but do not apply it.
Expiration uint64 `protobuf:"varint,1,opt,name=expiration,proto3" json:"expiration,omitempty"`
// The effective persisted spend maturity depth. A zero-depth renewal
// returns the retained non-zero depth of an existing
@@ -786,12 +831,14 @@ func (x *ReleaseOutputResponse) GetStatus() string {
type KeyReq struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // via public derivation.
+ //
+ //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
+ //via public derivation.
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
- // known as the "account".
+ //
+ //The target key family to derive a key from. In other contexts, this is
+ //known as the "account".
KeyFamily int32 `protobuf:"varint,2,opt,name=key_family,json=keyFamily,proto3" json:"key_family,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -843,12 +890,15 @@ func (x *KeyReq) GetKeyFamily() int32 {
type AddrRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The name of the account to retrieve the next address of. If empty, the
- // default wallet account is used.
+ //
+ //The name of the account to retrieve the next address of. If empty, the
+ //default wallet account is used.
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"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -907,7 +957,8 @@ func (x *AddrRequest) GetChange() bool {
type AddrResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -956,26 +1007,31 @@ type Account struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// 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"`
- // 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
- // imported account in which single public keys are imported into.
+ //
+ //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
+ //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"`
- // 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
- // which single public keys are imported into. The bytes are in big-endian
- // order.
+ //
+ //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
+ //which single public keys are imported into. The bytes are in big-endian
+ //order.
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
- // always be empty for the default imported account in which single public keys
- // are imported into.
+ //
+ //The derivation path corresponding to the account public key. This will
+ //always be empty for the default imported account in which single public keys
+ //are imported into.
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
- // key. This will always be zero for the default imported account in which
- // single public keys are imported into.
+ //
+ //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
+ //single public keys are imported into.
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
- // key. This will always be zero for the default imported account in which
- // single public keys are imported into.
+ //
+ //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
+ //single public keys are imported into.
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.
WatchOnly bool `protobuf:"varint,8,opt,name=watch_only,json=watchOnly,proto3" json:"watch_only,omitempty"`
@@ -1071,14 +1127,15 @@ func (x *Account) GetWatchOnly() bool {
type AddressProperty struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The address encoded using the appropriate format depending on the
- // address type (base58, bech32, bech32m).
- //
- // Note that lnd's internal/custom keys for channels and other
- // functionality are derived from the same scope. Since they
- // 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).
+ //
+ //The address encoded using the appropriate format depending on the
+ //address type (base58, bech32, bech32m).
+ //
+ //Note that lnd's internal/custom keys for channels and other
+ //functionality are derived from the same scope. Since they
+ //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"`
// Denotes if the address is a change address.
IsInternal bool `protobuf:"varint,2,opt,name=is_internal,json=isInternal,proto3" json:"is_internal,omitempty"`
@@ -1164,14 +1221,16 @@ type AccountWithAddresses struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// 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"`
- // The derivation path corresponding to the account public key. This will
- // always be empty for the default imported account in which single public keys
- // are imported into.
+ //
+ //The derivation path corresponding to the account public key. This will
+ //always be empty for the default imported account in which single public keys
+ //are imported into.
DerivationPath string `protobuf:"bytes,3,opt,name=derivation_path,json=derivationPath,proto3" json:"derivation_path,omitempty"`
- // List of address, its type internal/external & balance.
- // 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
- // wallet.
+ //
+ //List of address, its type internal/external & balance.
+ //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
+ //wallet.
Addresses []*AddressProperty `protobuf:"bytes,4,rep,name=addresses,proto3" json:"addresses,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1351,11 +1410,12 @@ type XCreateAccountRequest struct {
// HYBRID_NESTED_WITNESS_PUBKEY_HASH. Ask for that type explicitly if it
// is what you want.
AddressType AddressType `protobuf:"varint,2,opt,name=address_type,json=addressType,proto3,enum=walletrpc.AddressType" json:"address_type,omitempty"`
- // Override the requirement for being in dev mode by setting this to true and
- // confirming the user knows what they are doing: funds held in an account
- // created here are not rediscovered by a seed-only restore, so recovering
- // them requires having recorded the account's key scope and index and the
- // number of addresses it issued.
+ //
+ //Override the requirement for being in dev mode by setting this to true and
+ //confirming the user knows what they are doing: funds held in an account
+ //created here are not rediscovered by a seed-only restore, so recovering
+ //them requires having recorded the account's key scope and index and the
+ //number of addresses it issued.
IKnowWhatIAmDoing bool `protobuf:"varint,3,opt,name=i_know_what_i_am_doing,json=iKnowWhatIAmDoing,proto3" json:"i_know_what_i_am_doing,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1917,24 +1977,28 @@ type ImportAccountRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// A name to identify the account with.
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
- // key. It must conform to a derivation path of the form
- // m/purpose'/coin_type'/account'.
+ //
+ //A public key that corresponds to a wallet account represented as an extended
+ //key. It must conform to a derivation path of the form
+ //m/purpose'/coin_type'/account'.
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
- // 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
- // must be in big-endian order.
+ //
+ //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
+ //by some hardware wallets for proper identification and signing. The bytes
+ //must be in big-endian order.
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
- // legacy version (xpub, tpub, etc.), such that the wallet cannot detect what
- // address scheme it belongs to.
+ //
+ //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
+ //address scheme it belongs to.
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
- // 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
- // the account. If these addresses match as expected, then it should be safe to
- // import the account as is.
+ //
+ //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
+ //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
+ //import the account as is.
DryRun bool `protobuf:"varint,5,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2009,13 +2073,15 @@ type ImportAccountResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The details of the imported account.
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 external branch is typically used for external non-change addresses.
- // These are only returned if a dry run was specified within the request.
+ //
+ //The first N addresses that belong to the external branch of the account.
+ //The external branch is typically used for external non-change addresses.
+ //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"`
- // 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
- // returned if a dry run was specified within the request.
+ //
+ //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
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2173,7 +2239,8 @@ func (x *ImportPublicKeyResponse) GetStatus() string {
type ImportTapscriptRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The internal public key, serialized as 32-byte x-only public key.
+ //
+ //The internal public key, serialized as 32-byte x-only public key.
InternalPublicKey []byte `protobuf:"bytes,1,opt,name=internal_public_key,json=internalPublicKey,proto3" json:"internal_public_key,omitempty"`
// Types that are valid to be assigned to Script:
//
@@ -2271,30 +2338,34 @@ type isImportTapscriptRequest_Script interface {
}
type ImportTapscriptRequest_FullTree struct {
- // The full script tree with all individual leaves is known and the root
- // hash can be constructed from the full tree directly.
+ //
+ //The full script tree with all individual leaves is known and the root
+ //hash can be constructed from the full tree directly.
FullTree *TapscriptFullTree `protobuf:"bytes,2,opt,name=full_tree,json=fullTree,proto3,oneof"`
}
type ImportTapscriptRequest_PartialReveal struct {
- // Only a single script leaf is known. To construct the root hash, the full
- // inclusion proof must also be provided.
+ //
+ //Only a single script leaf is known. To construct the root hash, the full
+ //inclusion proof must also be provided.
PartialReveal *TapscriptPartialReveal `protobuf:"bytes,3,opt,name=partial_reveal,json=partialReveal,proto3,oneof"`
}
type ImportTapscriptRequest_RootHashOnly struct {
- // Only the root hash of the Taproot script tree (or other form of Taproot
- // commitment) is known.
+ //
+ //Only the root hash of the Taproot script tree (or other form of Taproot
+ //commitment) is known.
RootHashOnly []byte `protobuf:"bytes,4,opt,name=root_hash_only,json=rootHashOnly,proto3,oneof"`
}
type ImportTapscriptRequest_FullKeyOnly struct {
- // Only the final, tweaked Taproot key is known and no additional
- // information about the internal key or type of tweak that was used to
- // derive it. When this is set, the wallet treats the key in
- // internal_public_key as the Taproot key directly. This can be useful for
- // tracking arbitrary Taproot outputs without the goal of ever being able
- // to spend from them through the internal wallet.
+ //
+ //Only the final, tweaked Taproot key is known and no additional
+ //information about the internal key or type of tweak that was used to
+ //derive it. When this is set, the wallet treats the key in
+ //internal_public_key as the Taproot key directly. This can be useful for
+ //tracking arbitrary Taproot outputs without the goal of ever being able
+ //to spend from them through the internal wallet.
FullKeyOnly bool `protobuf:"varint,5,opt,name=full_key_only,json=fullKeyOnly,proto3,oneof"`
}
@@ -2308,7 +2379,8 @@ func (*ImportTapscriptRequest_FullKeyOnly) isImportTapscriptRequest_Script() {}
type TapscriptFullTree struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The complete, ordered list of all tap leaves of the tree.
+ //
+ //The complete, ordered list of all tap leaves of the tree.
AllLeaves []*TapLeaf `protobuf:"bytes,1,rep,name=all_leaves,json=allLeaves,proto3" json:"all_leaves,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2464,8 +2536,9 @@ func (x *TapscriptPartialReveal) GetFullInclusionProof() []byte {
type ImportTapscriptResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The resulting pay-to-Taproot address that represents the imported internal
- // key with the script committed to it.
+ //
+ //The resulting pay-to-Taproot address that represents the imported internal
+ //key with the script committed to it.
P2TrAddress string `protobuf:"bytes,1,opt,name=p2tr_address,json=p2trAddress,proto3" json:"p2tr_address,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2510,11 +2583,13 @@ func (x *ImportTapscriptResponse) GetP2TrAddress() string {
type Transaction struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The raw serialized transaction. Despite the field name, this does need to be
- // specified in raw bytes (or base64 encoded when using REST) and not in hex.
- // To not break existing software, the field can't simply be renamed.
+ //
+ //The raw serialized transaction. Despite the field name, this does need to be
+ //specified in raw bytes (or base64 encoded when using REST) and not in hex.
+ //To not break existing software, the field can't simply be renamed.
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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2566,11 +2641,12 @@ func (x *Transaction) GetLabel() string {
type PublishResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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.
//
- // TODO(roasbeef): map to a proper enum type
+ //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.
+ //
+ //TODO(roasbeef): map to a proper enum type
PublishError string `protobuf:"bytes,1,opt,name=publish_error,json=publishError,proto3" json:"publish_error,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2615,13 +2691,15 @@ func (x *PublishResponse) GetPublishError() string {
type SubmitPackageRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The raw serialized transactions forming the package, topologically sorted
- // with unconfirmed parents first and the child last.
+ //
+ //The raw serialized transactions forming the package, topologically sorted
+ //with unconfirmed parents first and the child last.
RawTxs [][]byte `protobuf:"bytes,1,rep,name=raw_txs,json=rawTxs,proto3" json:"raw_txs,omitempty"`
- // Optional per-transaction fee-rate ceiling in sat/vByte (mapped onto the
- // submitpackage maxfeerate). When unset the node's default is used; an
- // explicit 0 means no limit, which is required for a CPFP child whose
- // standalone feerate is high.
+ //
+ //Optional per-transaction fee-rate ceiling in sat/vByte (mapped onto the
+ //submitpackage maxfeerate). When unset the node's default is used; an
+ //explicit 0 means no limit, which is required for a CPFP child whose
+ //standalone feerate is high.
SatPerVbyte *uint64 `protobuf:"varint,2,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof" json:"sat_per_vbyte,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2677,9 +2755,10 @@ type SubmitPackageTxResult struct {
Txid string `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"`
// If non-empty, the reason this transaction was rejected.
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
- // If non-empty, the wtxid (in hex) of a transaction with the same txid but a
- // different witness that was already in the mempool; the submitted
- // transaction was ignored as a duplicate (witness replacement).
+ //
+ //If non-empty, the wtxid (in hex) of a transaction with the same txid but a
+ //different witness that was already in the mempool; the submitted
+ //transaction was ignored as a duplicate (witness replacement).
OtherWtxid string `protobuf:"bytes,3,opt,name=other_wtxid,json=otherWtxid,proto3" json:"other_wtxid,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2846,10 +2925,12 @@ func (x *RemoveTransactionResponse) GetStatus() string {
type SendOutputsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The number of satoshis per kilo weight that should be used when crafting
- // this transaction.
+ //
+ //The number of satoshis per kilo weight that should be used when crafting
+ //this transaction.
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"`
// An optional label for the transaction, limited to 500 characters.
Label string `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty"`
@@ -2938,7 +3019,8 @@ func (x *SendOutputsRequest) GetCoinSelectionStrategy() lnrpc.CoinSelectionStrat
type SendOutputsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -2983,7 +3065,8 @@ func (x *SendOutputsResponse) GetRawTx() []byte {
type EstimateFeeRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -3028,8 +3111,9 @@ func (x *EstimateFeeRequest) GetConfTarget() int32 {
type EstimateFeeResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The amount of satoshis per kw that should be used in order to reach the
- // confirmation target in the request.
+ //
+ //The amount of satoshis per kw that should be used in order to reach the
+ //confirmation target in the request.
SatPerKw int64 `protobuf:"varint,1,opt,name=sat_per_kw,json=satPerKw,proto3" json:"sat_per_kw,omitempty"`
// The current minimum relay fee based on our chain backend in sat/kw.
MinRelayFeeSatPerKw int64 `protobuf:"varint,2,opt,name=min_relay_fee_sat_per_kw,json=minRelayFeeSatPerKw,proto3" json:"min_relay_fee_sat_per_kw,omitempty"`
@@ -3089,30 +3173,34 @@ type PendingSweep struct {
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.
AmountSat uint32 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"`
- // Deprecated, use sat_per_vbyte.
- // 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
- // created, so it's possible for this to be 0 before this.
+ //
+ //Deprecated, use sat_per_vbyte.
+ //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
+ //created, so it's possible for this to be 0 before this.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
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.
BroadcastAttempts uint32 `protobuf:"varint,5,opt,name=broadcast_attempts,json=broadcastAttempts,proto3" json:"broadcast_attempts,omitempty"`
- // Deprecated.
- // The next height of the chain at which we'll attempt to broadcast the
- // sweep transaction of the output.
+ //
+ //Deprecated.
+ //The next height of the chain at which we'll attempt to broadcast the
+ //sweep transaction of the output.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
NextBroadcastHeight uint32 `protobuf:"varint,6,opt,name=next_broadcast_height,json=nextBroadcastHeight,proto3" json:"next_broadcast_height,omitempty"`
- // Deprecated, use immediate.
- // Whether this input must be force-swept. This means that it is swept
- // immediately.
+ //
+ //Deprecated, use immediate.
+ //Whether this input must be force-swept. This means that it is swept
+ //immediately.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
Force bool `protobuf:"varint,7,opt,name=force,proto3" json:"force,omitempty"`
- // Deprecated, use deadline.
- // The requested confirmation target for this output, which is the deadline
- // used by the sweeper.
+ //
+ //Deprecated, use deadline.
+ //The requested confirmation target for this output, which is the deadline
+ //used by the sweeper.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
RequestedConfTarget uint32 `protobuf:"varint,8,opt,name=requested_conf_target,json=requestedConfTarget,proto3" json:"requested_conf_target,omitempty"`
@@ -3121,22 +3209,27 @@ type PendingSweep struct {
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
RequestedSatPerByte uint32 `protobuf:"varint,9,opt,name=requested_sat_per_byte,json=requestedSatPerByte,proto3" json:"requested_sat_per_byte,omitempty"`
- // The current 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 created, so it's possible for this to be 0 before this.
+ //
+ //The current 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 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"`
// The requested starting fee rate, expressed in sat/vbyte, for this
// output. When not requested, this field will be 0.
RequestedSatPerVbyte uint64 `protobuf:"varint,11,opt,name=requested_sat_per_vbyte,json=requestedSatPerVbyte,proto3" json:"requested_sat_per_vbyte,omitempty"`
- // Whether this input will be swept immediately.
+ //
+ //Whether this input will be swept immediately.
Immediate bool `protobuf:"varint,12,opt,name=immediate,proto3" json:"immediate,omitempty"`
- // The budget for this sweep, expressed in satoshis. This is the maximum amount
- // that can be spent as fees to sweep this output.
+ //
+ //The budget for this sweep, expressed in satoshis. This is the maximum amount
+ //that can be spent as fees to sweep this output.
Budget uint64 `protobuf:"varint,13,opt,name=budget,proto3" json:"budget,omitempty"`
- // The deadline height used for this output when perform fee bumping.
+ //
+ //The deadline height used for this output when perform fee bumping.
DeadlineHeight uint32 `protobuf:"varint,14,opt,name=deadline_height,json=deadlineHeight,proto3" json:"deadline_height,omitempty"`
- // The block height which the input's locktime will expire at. Zero if the
- // input has no locktime.
+ //
+ //The block height which the input's locktime will expire at. Zero if the
+ //input has no locktime.
MaturityHeight uint32 `protobuf:"varint,15,opt,name=maturity_height,json=maturityHeight,proto3" json:"maturity_height,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -3320,7 +3413,8 @@ func (*PendingSweepsRequest) Descriptor() ([]byte, []int) {
type PendingSweepsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -3370,32 +3464,37 @@ type BumpFeeRequest struct {
// Optional. The conf target the underlying fee estimator will use to
// estimate the starting fee rate for the fee function.
TargetConf uint32 `protobuf:"varint,2,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
- // Deprecated, use sat_per_vbyte.
- // The fee rate, expressed in sat/vbyte, that should be used to spend the input
- // with.
+ //
+ //Deprecated, use sat_per_vbyte.
+ //The fee rate, expressed in sat/vbyte, that should be used to spend the input
+ //with.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
SatPerByte uint32 `protobuf:"varint,3,opt,name=sat_per_byte,json=satPerByte,proto3" json:"sat_per_byte,omitempty"`
- // Deprecated, use immediate.
- // Whether this input must be force-swept. This means that it is swept
- // immediately.
+ //
+ //Deprecated, use immediate.
+ //Whether this input must be force-swept. This means that it is swept
+ //immediately.
//
// Deprecated: Marked as deprecated in walletrpc/walletkit.proto.
Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
- // Optional. The starting fee rate, expressed in sat/vbyte, that will be used
- // to spend the input with initially. This value will be used by the sweeper's
- // fee function as its starting fee rate. When not set, the sweeper will use
- // the estimated fee rate using the `target_conf` as the starting fee rate.
+ //
+ //Optional. The starting fee rate, expressed in sat/vbyte, that will be used
+ //to spend the input with initially. This value will be used by the sweeper's
+ //fee function as its starting fee rate. When not set, the sweeper will use
+ //the estimated fee rate using the `target_conf` as the starting fee rate.
SatPerVbyte uint64 `protobuf:"varint,5,opt,name=sat_per_vbyte,json=satPerVbyte,proto3" json:"sat_per_vbyte,omitempty"`
- // Optional. Whether this input will be swept immediately. When set to true,
- // the sweeper will sweep this input without waiting for the next block.
+ //
+ //Optional. Whether this input will be swept immediately. When set to true,
+ //the sweeper will sweep this input without waiting for the next block.
Immediate bool `protobuf:"varint,6,opt,name=immediate,proto3" json:"immediate,omitempty"`
- // Optional. The max amount in sats that can be used as the fees. Setting this
- // value greater than the input's value may result in CPFP - one or more wallet
- // utxos will be used to pay the fees specified by the budget. If not set, for
- // new inputs, by default 50% of the input's value will be treated as the
- // budget for fee bumping; for existing inputs, their current budgets will be
- // retained.
+ //
+ //Optional. The max amount in sats that can be used as the fees. Setting this
+ //value greater than the input's value may result in CPFP - one or more wallet
+ //utxos will be used to pay the fees specified by the budget. If not set, for
+ //new inputs, by default 50% of the input's value will be treated as the
+ //budget for fee bumping; for existing inputs, their current budgets will be
+ //retained.
Budget uint64 `protobuf:"varint,7,opt,name=budget,proto3" json:"budget,omitempty"`
// Optional. The deadline delta in number of blocks that the output
// should be spent within. This translates internally to the width of the
@@ -3548,21 +3647,24 @@ type BumpForceCloseFeeRequest struct {
// should be spent within to bump the closing transaction. When the
// deadline is reached, ALL the budget will be spent as fees
DeadlineDelta uint32 `protobuf:"varint,2,opt,name=deadline_delta,json=deadlineDelta,proto3" json:"deadline_delta,omitempty"`
- // Optional. The starting fee rate, expressed in sat/vbyte. This value will be
- // used by the sweeper's fee function as its starting fee rate. When not set,
- // the sweeper will use the estimated fee rate using the target_conf as the
- // starting fee rate.
+ //
+ //Optional. The starting fee rate, expressed in sat/vbyte. This value will be
+ //used by the sweeper's fee function as its starting fee rate. When not set,
+ //the sweeper will use the estimated fee rate using the target_conf as the
+ //starting fee rate.
StartingFeerate uint64 `protobuf:"varint,3,opt,name=starting_feerate,json=startingFeerate,proto3" json:"starting_feerate,omitempty"`
- // Optional. Whether this cpfp transaction will be triggered immediately. When
- // set to true, the sweeper will consider all currently registered sweeps and
- // trigger new batch transactions including the sweeping of the anchor output
- // related to the selected force close transaction.
+ //
+ //Optional. Whether this cpfp transaction will be triggered immediately. When
+ //set to true, the sweeper will consider all currently registered sweeps and
+ //trigger new batch transactions including the sweeping of the anchor output
+ //related to the selected force close transaction.
Immediate bool `protobuf:"varint,4,opt,name=immediate,proto3" json:"immediate,omitempty"`
- // Optional. The max amount in sats that can be used as the fees. For already
- // registered anchor outputs if not set explicitly the old value will be used.
- // For channel force closes which have no HTLCs in their commitment transaction
- // this value has to be set to an appropriate amount to pay for the cpfp
- // transaction of the force closed channel otherwise the fee bumping will fail.
+ //
+ //Optional. The max amount in sats that can be used as the fees. For already
+ //registered anchor outputs if not set explicitly the old value will be used.
+ //For channel force closes which have no HTLCs in their commitment transaction
+ //this value has to be set to an appropriate amount to pay for the cpfp
+ //transaction of the force closed channel otherwise the fee bumping will fail.
Budget uint64 `protobuf:"varint,5,opt,name=budget,proto3" json:"budget,omitempty"`
// Optional. The conf target the underlying fee estimator will use to
// estimate the starting fee rate for the fee function.
@@ -3690,13 +3792,15 @@ func (x *BumpForceCloseFeeResponse) GetStatus() string {
type ListSweepsRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // replaced-by-fee, so will not be included in this output.
+ //
+ //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
+ //replaced-by-fee, so will not be included in this output.
Verbose bool `protobuf:"varint,1,opt,name=verbose,proto3" json:"verbose,omitempty"`
- // The start height to use when fetching sweeps. If not specified (0), the
- // result will start from the earliest sweep. If set to -1 the result will
- // only include unconfirmed sweeps (at the time of the call).
+ //
+ //The start height to use when fetching sweeps. If not specified (0), the
+ //result will start from the earliest sweep. If set to -1 the result will
+ //only include unconfirmed sweeps (at the time of the call).
StartHeight int32 `protobuf:"varint,2,opt,name=start_height,json=startHeight,proto3" json:"start_height,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -3951,8 +4055,9 @@ type FundPsbtRequest struct {
// *FundPsbtRequest_SatPerVbyte
// *FundPsbtRequest_SatPerKw
Fees isFundPsbtRequest_Fees `protobuf_oneof:"fees"`
- // The name of the account to fund the PSBT with. If empty, the default wallet
- // account is used.
+ //
+ //The name of the account to fund the PSBT with. If empty, the default wallet
+ //account is used.
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 transaction must satisfy.
@@ -4155,39 +4260,42 @@ type isFundPsbtRequest_Template interface {
}
type FundPsbtRequest_Psbt struct {
- // 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
- // 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 specified fee rate. A change
- // output is added to the PSBT if necessary.
+ //
+ //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
+ //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 specified fee rate. A change
+ //output is added to the PSBT if necessary.
Psbt []byte `protobuf:"bytes,1,opt,name=psbt,proto3,oneof"`
}
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"`
}
type FundPsbtRequest_CoinSelect struct {
- // Use an existing PSBT packet as the template for the funded PSBT.
- //
- // The difference to the pure PSBT template above is that coin selection is
- // performed even if inputs are specified. The output amounts are summed up
- // and used as the target amount for coin selection. A change output must
- // either already exist in the PSBT and be marked as such, otherwise a new
- // change output of the specified output type will be added. Any inputs
- // already specified in the PSBT must already be locked (if they belong to
- // this node), only newly added inputs will be locked by this RPC.
- //
- // In case the sum of the already provided inputs exceeds the required
- // output amount, no new coins are selected. Instead only the fee and
- // change amount calculation is performed (e.g. a change output is added if
- // requested or the change is added to the specified existing change
- // output, given there is any non-dust change). This can be identified by
- // the returned locked UTXOs being empty.
+ //
+ //Use an existing PSBT packet as the template for the funded PSBT.
+ //
+ //The difference to the pure PSBT template above is that coin selection is
+ //performed even if inputs are specified. The output amounts are summed up
+ //and used as the target amount for coin selection. A change output must
+ //either already exist in the PSBT and be marked as such, otherwise a new
+ //change output of the specified output type will be added. Any inputs
+ //already specified in the PSBT must already be locked (if they belong to
+ //this node), only newly added inputs will be locked by this RPC.
+ //
+ //In case the sum of the already provided inputs exceeds the required
+ //output amount, no new coins are selected. Instead only the fee and
+ //change amount calculation is performed (e.g. a change output is added if
+ //requested or the change is added to the specified existing change
+ //output, given there is any non-dust change). This can be identified by
+ //the returned locked UTXOs being empty.
CoinSelect *PsbtCoinSelect `protobuf:"bytes,9,opt,name=coin_select,json=coinSelect,proto3,oneof"`
}
@@ -4202,19 +4310,22 @@ type isFundPsbtRequest_Fees interface {
}
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"`
}
type FundPsbtRequest_SatPerVbyte struct {
- // The fee rate, expressed in sat/vbyte, that should be used to spend the
- // input with.
+ //
+ //The fee rate, expressed in sat/vbyte, that should be used to spend the
+ //input with.
SatPerVbyte uint64 `protobuf:"varint,4,opt,name=sat_per_vbyte,json=satPerVbyte,proto3,oneof"`
}
type FundPsbtRequest_SatPerKw struct {
- // The fee rate, expressed in sat/kWU, that should be used to spend the
- // input with.
+ //
+ //The fee rate, expressed in sat/kWU, that should be used to spend the
+ //input with.
SatPerKw uint64 `protobuf:"varint,11,opt,name=sat_per_kw,json=satPerKw,proto3,oneof"`
}
@@ -4226,13 +4337,16 @@ func (*FundPsbtRequest_SatPerKw) isFundPsbtRequest_Fees() {}
type FundPsbtResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
- // 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"`
- // The list of lock leases that were acquired for the inputs in the funded PSBT
- // packet. Only inputs added to the PSBT by this RPC are locked, inputs that
- // were already present in the PSBT are not locked.
+ //
+ //The list of lock leases that were acquired for the inputs in the funded PSBT
+ //packet. Only inputs added to the PSBT by this RPC are locked, inputs that
+ //were already present in the PSBT are not locked.
LockedUtxos []*UtxoLease `protobuf:"bytes,3,rep,name=locked_utxos,json=lockedUtxos,proto3" json:"locked_utxos,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -4291,15 +4405,17 @@ func (x *FundPsbtResponse) GetLockedUtxos() []*UtxoLease {
type TxTemplate struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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.
//
- // If no inputs are specified, coin selection will be performed instead and
- // inputs of sufficient value will be added to the resulting PSBT.
+ //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.
+ //
+ //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"`
- // 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" protobuf_val:"varint,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -4351,15 +4467,16 @@ func (x *TxTemplate) GetOutputs() map[string]uint64 {
type PsbtCoinSelect struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The template to use for the funded PSBT. The template must contain at least
- // one non-dust output. The amount to be funded is calculated by summing up the
- // amounts of all outputs in the template, subtracting all the input values of
- // the already specified inputs. The change value is added to the output that
- // is marked as such (or a new change output is added if none is marked). For
- // the input amount calculation to be correct, the template must have the
- // WitnessUtxo field set for all inputs. Any inputs already specified in the
- // PSBT must already be locked (if they belong to this node), only newly added
- // inputs will be locked by this RPC.
+ //
+ //The template to use for the funded PSBT. The template must contain at least
+ //one non-dust output. The amount to be funded is calculated by summing up the
+ //amounts of all outputs in the template, subtracting all the input values of
+ //the already specified inputs. The change value is added to the output that
+ //is marked as such (or a new change output is added if none is marked). For
+ //the input amount calculation to be correct, the template must have the
+ //WitnessUtxo field set for all inputs. Any inputs already specified in the
+ //PSBT must already be locked (if they belong to this node), only newly added
+ //inputs will be locked by this RPC.
Psbt []byte `protobuf:"bytes,1,opt,name=psbt,proto3" json:"psbt,omitempty"`
// Types that are valid to be assigned to ChangeOutput:
//
@@ -4437,17 +4554,19 @@ type isPsbtCoinSelect_ChangeOutput interface {
}
type PsbtCoinSelect_ExistingOutputIndex struct {
- // Use the existing output within the template PSBT with the specified
- // index as the change output. Any leftover change will be added to the
- // already specified amount of that output. To add a new change output to
- // the PSBT, set the "add" field below instead. The type of change output
- // added is defined by change_type in the parent message.
+ //
+ //Use the existing output within the template PSBT with the specified
+ //index as the change output. Any leftover change will be added to the
+ //already specified amount of that output. To add a new change output to
+ //the PSBT, set the "add" field below instead. The type of change output
+ //added is defined by change_type in the parent message.
ExistingOutputIndex int32 `protobuf:"varint,2,opt,name=existing_output_index,json=existingOutputIndex,proto3,oneof"`
}
type PsbtCoinSelect_Add struct {
- // Add a new change output to the PSBT using the change_type specified in
- // the parent message.
+ //
+ //Add a new change output to the PSBT using the change_type specified in
+ //the parent message.
Add bool `protobuf:"varint,3,opt,name=add,proto3,oneof"`
}
@@ -4457,17 +4576,21 @@ func (*PsbtCoinSelect_Add) isPsbtCoinSelect_ChangeOutput() {}
type UtxoLease struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
// The identifying outpoint of the output being leased.
Outpoint *lnrpc.OutPoint `protobuf:"bytes,2,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
- // The absolute expiration of a time-controlled output lease represented as a
- // unix timestamp. Confirmation-controlled leases retain this value for
- // compatibility but do not apply it.
+ //
+ //The absolute expiration of a time-controlled output lease represented as a
+ //unix timestamp. Confirmation-controlled leases retain this value for
+ //compatibility but do not apply it.
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"`
- // 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"`
// The spend maturity depth recorded for this lease. FundPsbt returns it
// only after the wallet successfully applies the requested option.
@@ -4563,8 +4686,9 @@ func (x *UtxoLease) GetConfirmedSpendHeight() int32 {
type SignPsbtRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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.
+ //
+ //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.
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -4663,12 +4787,14 @@ func (x *SignPsbtResponse) GetSignedInputs() []uint32 {
type FinalizePsbtRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // A PSBT that should be signed and finalized. The PSBT must contain all
- // required inputs, outputs, UTXO data and partial signatures of all other
- // signers.
+ //
+ //A PSBT that should be signed and finalized. The PSBT must contain all
+ //required inputs, outputs, UTXO data and partial signatures of all other
+ //signers.
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
- // wallet account is used.
+ //
+ //The name of the account to finalize the PSBT with. If empty, the default
+ //wallet account is used.
Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -4855,9 +4981,10 @@ func (x *ListLeasesResponse) GetLockedUtxos() []*UtxoLease {
type ListSweepsResponse_TransactionIDs struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Reversed, hex-encoded string representing the transaction ids of the
- // sweeps that our node has broadcast. Note that these transactions may
- // not have confirmed yet, we record sweeps on broadcast, not confirmation.
+ //
+ //Reversed, hex-encoded string representing the transaction ids of the
+ //sweeps that our node has broadcast. Note that these transactions may
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/walletrpc/walletkit_grpc.pb.go
@@ -20,347 +20,353 @@ 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.
type WalletKitClient interface {
- // ListUnspent returns a list of all utxos spendable by the wallet with a
- // number of confirmations between the specified minimum and maximum. By
- // default, all utxos are listed. To list only the unconfirmed utxos, set
- // the unconfirmed_only to true.
+ //
+ //ListUnspent returns a list of all utxos spendable by the wallet with a
+ //number of confirmations between the specified minimum and maximum. By
+ //default, all utxos are listed. To list only the unconfirmed utxos, set
+ //the unconfirmed_only to true.
ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error)
// lncli: `wallet leaseoutput`
- // LeaseOutput locks an output to the given ID, preventing it from being
- // available for any future coin selection attempts. The absolute time of the
- // lock's expiration is returned. The expiration of the lock can be extended by
- // successive invocations of this RPC. Outputs can be unlocked before their
- // expiration through `ReleaseOutput`.
- //
- // A non-zero release_after_spend_confs selects a confirmation-controlled
- // lifetime. Such a lease ignores its wall-clock expiration and releases at
- // the requested spend depth or through ReleaseOutput. The RPC fails if the
- // wallet cannot apply this option. Renewing the same lease with the same ID
- // and a zero depth preserves an existing non-zero depth.
+ //LeaseOutput locks an output to the given ID, preventing it from being
+ //available for any future coin selection attempts. The absolute time of the
+ //lock's expiration is returned. The expiration of the lock can be extended by
+ //successive invocations of this RPC. Outputs can be unlocked before their
+ //expiration through `ReleaseOutput`.
+ //
+ //A non-zero release_after_spend_confs selects a confirmation-controlled
+ //lifetime. Such a lease ignores its wall-clock expiration and releases at
+ //the requested spend depth or through ReleaseOutput. The RPC fails if the
+ //wallet cannot apply this option. Renewing the same lease with the same ID
+ //and a zero depth preserves an existing non-zero depth.
LeaseOutput(ctx context.Context, in *LeaseOutputRequest, opts ...grpc.CallOption) (*LeaseOutputResponse, error)
// lncli: `wallet releaseoutput`
- // ReleaseOutput unlocks an output, allowing it to be available for coin
- // selection if it remains unspent. The ID should match the one used to
- // originally lock the output. A retained release-after-spend lease can also be
- // released after its spending transaction has been observed.
+ //ReleaseOutput unlocks an output, allowing it to be available for coin
+ //selection if it remains unspent. The ID should match the one used to
+ //originally lock the output. A retained release-after-spend lease can also be
+ //released after its spending transaction has been observed.
ReleaseOutput(ctx context.Context, in *ReleaseOutputRequest, opts ...grpc.CallOption) (*ReleaseOutputResponse, error)
// lncli: `wallet listleases`
- // ListLeases lists all currently locked utxos.
+ //ListLeases lists all currently locked utxos.
ListLeases(ctx context.Context, in *ListLeasesRequest, opts ...grpc.CallOption) (*ListLeasesResponse, error)
- // DeriveNextKey attempts to derive the *next* key within the key family
- // (account in BIP43) specified. This method should return the next external
- // child within this branch.
+ //
+ //DeriveNextKey attempts to derive the *next* key within the key family
+ //(account in BIP43) specified. This method should return the next external
+ //child within this branch.
DeriveNextKey(ctx context.Context, in *KeyReq, opts ...grpc.CallOption) (*signrpc.KeyDescriptor, error)
- // DeriveKey attempts to derive an arbitrary key specified by the passed
- // KeyLocator.
+ //
+ //DeriveKey attempts to derive an arbitrary key specified by the passed
+ //KeyLocator.
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)
// lncli: `wallet gettx`
- // GetTransaction returns details for a transaction found in the wallet.
+ //GetTransaction returns details for a transaction found in the wallet.
GetTransaction(ctx context.Context, in *GetTransactionRequest, opts ...grpc.CallOption) (*lnrpc.Transaction, error)
// lncli: `wallet accounts list`
- // 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
- // wallet accounts and return only those matching.
+ //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
+ //wallet accounts and return only those matching.
ListAccounts(ctx context.Context, in *ListAccountsRequest, opts ...grpc.CallOption) (*ListAccountsResponse, error)
// lncli: `wallet accounts create`
- // XCreateAccount is an experimental API that creates a new named account
- // within the wallet, deriving the account's keys from the wallet's master
- // key.
- //
- // In contrast to ImportAccount, which registers a watch-only account from an
- // externally supplied extended public key, the account created here is fully
- // owned by the wallet: it derives its own addresses and can sign for its own
- // outputs. That makes it usable as an isolated pocket of funds inside a single
- // wallet, because coin selection, change, balance and address derivation can
- // all be scoped to it by name.
- //
- // NOTE: The X prefix marks this API as experimental: it may change or be
- // removed without the usual deprecation period. It additionally requires
- // i_know_what_i_am_doing on release builds, because a seed-only restore does
- // not rediscover the funds an account created here holds; see the recovery
- // note below. That second gate comes off once recovery handles these
- // accounts, at which point the X can be dropped too.
- //
- // NOTE: The wallet must be unlocked, as deriving the account key requires
- // access to the master private key.
- //
- // NOTE: The call is not idempotent, and the account is created before the
- // response is sent. A client that cancels or times out may still have had
- // the account created, in which case its retry fails with "already exists"
- // — indistinguishable from a genuine name clash. Check ListAccounts before
- // retrying.
- //
- // NOTE: The account's address type is permanent and also fixes the type of
- // its change outputs. lnd resolves a custom account name within the key
- // scope implied by the requested address type, so every later call must ask
- // for the address type that maps to the same scope or the account will
- // appear not to exist. NextAddr and NewAddress take lnrpc.AddressType,
- // which has no HYBRID_NESTED_WITNESS_PUBKEY_HASH member: an account created
- // as HYBRID_NESTED_WITNESS_PUBKEY_HASH must be addressed with
- // NESTED_PUBKEY_HASH, which maps to the same BIP-0049Plus scope.
- // TAPROOT_PUBKEY and WITNESS_PUBKEY_HASH map across unchanged.
- //
- // NOTE: Funds held in an account created here are not rediscovered by a
- // seed-only recovery, because lnd's recovery scan only rederives addresses
- // for the wallet's default account (btcwallet's RecoveryManager hardcodes
- // waddrmgr.DefaultAccountNum). They are still recoverable, but only by
- // reconstructing the account first, and the account name is not what has to
- // be reproduced: accounts are derived from an index that btcwallet assigns
- // sequentially per key scope, shared with accounts created by ImportAccount.
- //
- // To keep an account recoverable, record its key scope, the account index
- // (the account's derivation_path in the response), and how many addresses
- // it has issued. To restore: re-create every account in that key scope in
- // their original order so the index counter lands on the same value,
- // re-derive at least as many addresses as were previously issued with
- // NextAddr — a rescan only searches for addresses already present in the
- // wallet database, and a freshly created account has none — and only then
- // rescan with --reset-wallet-transactions.
+ //XCreateAccount is an experimental API that creates a new named account
+ //within the wallet, deriving the account's keys from the wallet's master
+ //key.
+ //
+ //In contrast to ImportAccount, which registers a watch-only account from an
+ //externally supplied extended public key, the account created here is fully
+ //owned by the wallet: it derives its own addresses and can sign for its own
+ //outputs. That makes it usable as an isolated pocket of funds inside a single
+ //wallet, because coin selection, change, balance and address derivation can
+ //all be scoped to it by name.
+ //
+ //NOTE: The X prefix marks this API as experimental: it may change or be
+ //removed without the usual deprecation period. It additionally requires
+ //i_know_what_i_am_doing on release builds, because a seed-only restore does
+ //not rediscover the funds an account created here holds; see the recovery
+ //note below. That second gate comes off once recovery handles these
+ //accounts, at which point the X can be dropped too.
+ //
+ //NOTE: The wallet must be unlocked, as deriving the account key requires
+ //access to the master private key.
+ //
+ //NOTE: The call is not idempotent, and the account is created before the
+ //response is sent. A client that cancels or times out may still have had
+ //the account created, in which case its retry fails with "already exists"
+ //— indistinguishable from a genuine name clash. Check ListAccounts before
+ //retrying.
+ //
+ //NOTE: The account's address type is permanent and also fixes the type of
+ //its change outputs. lnd resolves a custom account name within the key
+ //scope implied by the requested address type, so every later call must ask
+ //for the address type that maps to the same scope or the account will
+ //appear not to exist. NextAddr and NewAddress take lnrpc.AddressType,
+ //which has no HYBRID_NESTED_WITNESS_PUBKEY_HASH member: an account created
+ //as HYBRID_NESTED_WITNESS_PUBKEY_HASH must be addressed with
+ //NESTED_PUBKEY_HASH, which maps to the same BIP-0049Plus scope.
+ //TAPROOT_PUBKEY and WITNESS_PUBKEY_HASH map across unchanged.
+ //
+ //NOTE: Funds held in an account created here are not rediscovered by a
+ //seed-only recovery, because lnd's recovery scan only rederives addresses
+ //for the wallet's default account (btcwallet's RecoveryManager hardcodes
+ //waddrmgr.DefaultAccountNum). They are still recoverable, but only by
+ //reconstructing the account first, and the account name is not what has to
+ //be reproduced: accounts are derived from an index that btcwallet assigns
+ //sequentially per key scope, shared with accounts created by ImportAccount.
+ //
+ //To keep an account recoverable, record its key scope, the account index
+ //(the account's derivation_path in the response), and how many addresses
+ //it has issued. To restore: re-create every account in that key scope in
+ //their original order so the index counter lands on the same value,
+ //re-derive at least as many addresses as were previously issued with
+ //NextAddr — a rescan only searches for addresses already present in the
+ //wallet database, and a freshly created account has none — and only then
+ //rescan with --reset-wallet-transactions.
XCreateAccount(ctx context.Context, in *XCreateAccountRequest, opts ...grpc.CallOption) (*XCreateAccountResponse, error)
// lncli: `wallet requiredreserve`
- // 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
- // scales with the number of public anchor channels but is capped at a maximum.
+ //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
+ //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)
// lncli: `wallet addresses list`
- // ListAddresses retrieves all the addresses along with their balance. An
- // account name filter can be provided to filter through all of the
- // wallet accounts and return the addresses of only those matching.
+ //ListAddresses retrieves all the addresses along with their balance. An
+ //account name filter can be provided to filter through all of the
+ //wallet accounts and return the addresses of only those matching.
ListAddresses(ctx context.Context, in *ListAddressesRequest, opts ...grpc.CallOption) (*ListAddressesResponse, error)
// lncli: `wallet addresses signmessage`
- // SignMessageWithAddr returns the compact signature (base64 encoded) created
- // with the private key of the provided address. This requires the address
- // to be solely based on a public key lock (no scripts). Obviously the internal
- // lnd wallet has to possess the private key of the address otherwise
- // an error is returned.
- //
- // This method aims to provide full compatibility with the bitcoin-core and
- // btcd implementation. Bitcoin-core's algorithm is not specified in a
- // BIP and only applicable for legacy addresses. This method enhances the
- // signing for additional address types: P2WKH, NP2WKH, P2TR.
- // For P2TR addresses this represents a special case. ECDSA is used to create
- // a compact signature which makes the public key of the signature recoverable.
+ //SignMessageWithAddr returns the compact signature (base64 encoded) created
+ //with the private key of the provided address. This requires the address
+ //to be solely based on a public key lock (no scripts). Obviously the internal
+ //lnd wallet has to possess the private key of the address otherwise
+ //an error is returned.
+ //
+ //This method aims to provide full compatibility with the bitcoin-core and
+ //btcd implementation. Bitcoin-core's algorithm is not specified in a
+ //BIP and only applicable for legacy addresses. This method enhances the
+ //signing for additional address types: P2WKH, NP2WKH, P2TR.
+ //For P2TR addresses this represents a special case. ECDSA is used to create
+ //a compact signature which makes the public key of the signature recoverable.
SignMessageWithAddr(ctx context.Context, in *SignMessageWithAddrRequest, opts ...grpc.CallOption) (*SignMessageWithAddrResponse, error)
// lncli: `wallet addresses verifymessage`
- // VerifyMessageWithAddr returns the validity and the recovered public key of
- // the provided compact signature (base64 encoded). The verification is
- // twofold. First the validity of the signature itself is checked and then
- // it is verified that the recovered public key of the signature equals
- // the public key of the provided address. There is no dependence on the
- // private key of the address therefore also external addresses are allowed
- // to verify signatures.
- // Supported address types are P2PKH, P2WKH, NP2WKH, P2TR.
- //
- // This method is the counterpart of the related signing method
- // (SignMessageWithAddr) and aims to provide full compatibility to
- // bitcoin-core's implementation. Although bitcoin-core/btcd only provide
- // this functionality for legacy addresses this function enhances it to
- // the address types: P2PKH, P2WKH, NP2WKH, P2TR.
- //
- // The verification for P2TR addresses is a special case and requires the
- // ECDSA compact signature to compare the reovered public key to the internal
- // taproot key. The compact ECDSA signature format was used because there
- // are still no known compact signature schemes for schnorr signatures.
+ //VerifyMessageWithAddr returns the validity and the recovered public key of
+ //the provided compact signature (base64 encoded). The verification is
+ //twofold. First the validity of the signature itself is checked and then
+ //it is verified that the recovered public key of the signature equals
+ //the public key of the provided address. There is no dependence on the
+ //private key of the address therefore also external addresses are allowed
+ //to verify signatures.
+ //Supported address types are P2PKH, P2WKH, NP2WKH, P2TR.
+ //
+ //This method is the counterpart of the related signing method
+ //(SignMessageWithAddr) and aims to provide full compatibility to
+ //bitcoin-core's implementation. Although bitcoin-core/btcd only provide
+ //this functionality for legacy addresses this function enhances it to
+ //the address types: P2PKH, P2WKH, NP2WKH, P2TR.
+ //
+ //The verification for P2TR addresses is a special case and requires the
+ //ECDSA compact signature to compare the reovered public key to the internal
+ //taproot key. The compact ECDSA signature format was used because there
+ //are still no known compact signature schemes for schnorr signatures.
VerifyMessageWithAddr(ctx context.Context, in *VerifyMessageWithAddrRequest, opts ...grpc.CallOption) (*VerifyMessageWithAddrResponse, error)
// lncli: `wallet accounts import`
- // 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.
- //
- // The address type can usually be inferred from the key's version, but may be
- // required for certain keys to map them into the proper scope.
- //
- // For BIP-0044 keys, an address type must be specified as we intend to not
- // 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-0049 keys, an address type must also be specified to make a
- // distinction between the standard BIP-0049 address schema (nested witness
- // pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
- // 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 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.
+ //
+ //The address type can usually be inferred from the key's version, but may be
+ //required for certain keys to map them into the proper scope.
+ //
+ //For BIP-0044 keys, an address type must be specified as we intend to not
+ //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-0049 keys, an address type must also be specified to make a
+ //distinction between the standard BIP-0049 address schema (nested witness
+ //pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
+ //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)
// lncli: `wallet accounts import-pubkey`
- // ImportPublicKey imports a public key as watch-only into the wallet. The
- // public key is converted into a simple address of the given type and that
- // address script is watched on chain. For Taproot keys, this will only watch
- // the BIP-0086 style output script. Use ImportTapscript for more advanced key
- // spend or script spend outputs.
- //
- // 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
- // supported later on.
+ //ImportPublicKey imports a public key as watch-only into the wallet. The
+ //public key is converted into a simple address of the given type and that
+ //address script is watched on chain. For Taproot keys, this will only watch
+ //the BIP-0086 style output script. Use ImportTapscript for more advanced key
+ //spend or script spend outputs.
+ //
+ //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
+ //supported later on.
ImportPublicKey(ctx context.Context, in *ImportPublicKeyRequest, opts ...grpc.CallOption) (*ImportPublicKeyResponse, error)
- // ImportTapscript imports a Taproot script and internal key and adds the
- // resulting Taproot output key as a watch-only output script into the wallet.
- // For BIP-0086 style Taproot keys (no root hash commitment and no script spend
- // path) use ImportPublicKey.
//
- // 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
- // supported later on.
+ //ImportTapscript imports a Taproot script and internal key and adds the
+ //resulting Taproot output key as a watch-only output script into the wallet.
+ //For BIP-0086 style Taproot keys (no root hash commitment and no script spend
+ //path) use ImportPublicKey.
//
- // NOTE: Taproot keys imported through this RPC currently _cannot_ be used for
- // funding PSBTs. Only tracking the balance and UTXOs is currently supported.
+ //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
+ //supported later on.
+ //
+ //NOTE: Taproot keys imported through this RPC currently _cannot_ be used for
+ //funding PSBTs. Only tracking the balance and UTXOs is currently supported.
ImportTapscript(ctx context.Context, in *ImportTapscriptRequest, opts ...grpc.CallOption) (*ImportTapscriptResponse, error)
// lncli: `wallet publishtx`
- // PublishTransaction attempts to publish the passed transaction to the
- // network. Once this returns without an error, the wallet will continually
- // attempt to re-broadcast the transaction on start up, until it enters the
- // chain.
+ //PublishTransaction attempts to publish the passed transaction to the
+ //network. Once this returns without an error, the wallet will continually
+ //attempt to re-broadcast the transaction on start up, until it enters the
+ //chain.
PublishTransaction(ctx context.Context, in *Transaction, opts ...grpc.CallOption) (*PublishResponse, error)
// lncli: `wallet submitpackage`
- // SubmitPackage submits a package of related transactions (topologically
- // sorted, unconfirmed parents first and the child last) for atomic
- // validation and acceptance. Real package submission is only performed by
- // the bitcoind backend, via the node's submitpackage RPC, which lets a
- // zero-fee v3/TRUC parent be accepted via its fee-paying CPFP child. The
- // btcd backend does not support submitpackage and returns an error. A
- // neutrino light client has no mempool and cannot atomically accept a
- // package; as a best effort it broadcasts the transactions individually and
- // relies on a peer's 1p1c package relay, returning an unverified result
- // (not a package-accept verdict).
+ //SubmitPackage submits a package of related transactions (topologically
+ //sorted, unconfirmed parents first and the child last) for atomic
+ //validation and acceptance. Real package submission is only performed by
+ //the bitcoind backend, via the node's submitpackage RPC, which lets a
+ //zero-fee v3/TRUC parent be accepted via its fee-paying CPFP child. The
+ //btcd backend does not support submitpackage and returns an error. A
+ //neutrino light client has no mempool and cannot atomically accept a
+ //package; as a best effort it broadcasts the transactions individually and
+ //relies on a peer's 1p1c package relay, returning an unverified result
+ //(not a package-accept verdict).
SubmitPackage(ctx context.Context, in *SubmitPackageRequest, opts ...grpc.CallOption) (*SubmitPackageResponse, error)
// lncli: `wallet removetx`
- // RemoveTransaction attempts to remove the provided transaction from the
- // internal transaction store of the wallet.
+ //RemoveTransaction attempts to remove the provided transaction from the
+ //internal transaction store of the wallet.
RemoveTransaction(ctx context.Context, in *GetTransactionRequest, opts ...grpc.CallOption) (*RemoveTransactionResponse, error)
- // SendOutputs is similar to the existing sendmany call in Bitcoind, and
- // allows the caller to create a transaction that sends to several outputs at
- // once. This is ideal when wanting to batch create a set of transactions.
+ //
+ //SendOutputs is similar to the existing sendmany call in Bitcoind, and
+ //allows the caller to create a transaction that sends to several outputs at
+ //once. This is ideal when wanting to batch create a set of transactions.
SendOutputs(ctx context.Context, in *SendOutputsRequest, opts ...grpc.CallOption) (*SendOutputsResponse, error)
// lncli: `wallet estimatefeerate`
- // EstimateFee attempts to query the internal fee estimator of the wallet to
- // determine the fee (in sat/kw) to attach to a transaction in order to
- // achieve the confirmation target.
+ //EstimateFee attempts to query the internal fee estimator of the wallet to
+ //determine the fee (in sat/kw) to attach to a transaction in order to
+ //achieve the confirmation target.
EstimateFee(ctx context.Context, in *EstimateFeeRequest, opts ...grpc.CallOption) (*EstimateFeeResponse, error)
// lncli: `wallet pendingsweeps`
- // PendingSweeps returns lists of on-chain outputs that lnd is currently
- // attempting to sweep within its central batching engine. Outputs with similar
- // fee rates are batched together in order to sweep them within a single
- // transaction.
- //
- // NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
- // remain supported. This is an advanced API that depends on the internals of
- // the UtxoSweeper, so things may change.
+ //PendingSweeps returns lists of on-chain outputs that lnd is currently
+ //attempting to sweep within its central batching engine. Outputs with similar
+ //fee rates are batched together in order to sweep them within a single
+ //transaction.
+ //
+ //NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
+ //remain supported. This is an advanced API that depends on the internals of
+ //the UtxoSweeper, so things may change.
PendingSweeps(ctx context.Context, in *PendingSweepsRequest, opts ...grpc.CallOption) (*PendingSweepsResponse, error)
// lncli: `wallet bumpfee`
- // BumpFee is an endpoint that allows users to interact with lnd's sweeper
- // directly. It takes an outpoint from an unconfirmed transaction and sends it
- // to the sweeper for potential fee bumping. Depending on whether the outpoint
- // has been registered in the sweeper (an existing input, e.g., an anchor
- // output) or not (a new input, e.g., an unconfirmed wallet utxo), this will
- // either be an RBF or CPFP attempt.
- //
- // When receiving an input, lnd’s sweeper needs to understand its time
- // sensitivity to make economical fee bumps - internally a fee function is
- // created using the deadline and budget to guide the process. When the
- // deadline is approaching, the fee function will increase the fee rate and
- // perform an RBF.
- //
- // When a force close happens, all the outputs from the force closing
- // transaction will be registered in the sweeper. The sweeper will then handle
- // the creation, publish, and fee bumping of the sweeping transactions.
- // Everytime a new block comes in, unless the sweeping transaction is
- // confirmed, an RBF is attempted. To interfere with this automatic process,
- // users can use BumpFee to specify customized fee rate, budget, deadline, and
- // whether the sweep should happen immediately. It's recommended to call
- // `ListSweeps` to understand the shape of the existing sweeping transaction
- // first - depending on the number of inputs in this transaction, the RBF
- // requirements can be quite different.
- //
- // This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
- // (CPFP), where the child transaction pays for its parent's fee. This can be
- // done by specifying an outpoint within the low fee transaction that is under
- // the control of the wallet.
+ //BumpFee is an endpoint that allows users to interact with lnd's sweeper
+ //directly. It takes an outpoint from an unconfirmed transaction and sends it
+ //to the sweeper for potential fee bumping. Depending on whether the outpoint
+ //has been registered in the sweeper (an existing input, e.g., an anchor
+ //output) or not (a new input, e.g., an unconfirmed wallet utxo), this will
+ //either be an RBF or CPFP attempt.
+ //
+ //When receiving an input, lnd’s sweeper needs to understand its time
+ //sensitivity to make economical fee bumps - internally a fee function is
+ //created using the deadline and budget to guide the process. When the
+ //deadline is approaching, the fee function will increase the fee rate and
+ //perform an RBF.
+ //
+ //When a force close happens, all the outputs from the force closing
+ //transaction will be registered in the sweeper. The sweeper will then handle
+ //the creation, publish, and fee bumping of the sweeping transactions.
+ //Everytime a new block comes in, unless the sweeping transaction is
+ //confirmed, an RBF is attempted. To interfere with this automatic process,
+ //users can use BumpFee to specify customized fee rate, budget, deadline, and
+ //whether the sweep should happen immediately. It's recommended to call
+ //`ListSweeps` to understand the shape of the existing sweeping transaction
+ //first - depending on the number of inputs in this transaction, the RBF
+ //requirements can be quite different.
+ //
+ //This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
+ //(CPFP), where the child transaction pays for its parent's fee. This can be
+ //done by specifying an outpoint within the low fee transaction that is under
+ //the control of the wallet.
BumpFee(ctx context.Context, in *BumpFeeRequest, opts ...grpc.CallOption) (*BumpFeeResponse, error)
// lncli: `wallet bumpforceclosefee`
- // BumpForceCloseFee is an endpoint that allows users to bump the fee of a
- // channel force close. This only works for channels with option_anchors.
+ //BumpForceCloseFee is an endpoint that allows users to bump the fee of a
+ //channel force close. This only works for channels with option_anchors.
BumpForceCloseFee(ctx context.Context, in *BumpForceCloseFeeRequest, opts ...grpc.CallOption) (*BumpForceCloseFeeResponse, error)
// lncli: `wallet listsweeps`
- // ListSweeps returns a list of the sweep transactions our node has produced.
- // Note that these sweeps may not be confirmed yet, as we record sweeps on
- // broadcast, not confirmation.
+ //ListSweeps returns a list of the sweep transactions our node has produced.
+ //Note that these sweeps may not be confirmed yet, as we record sweeps on
+ //broadcast, not confirmation.
ListSweeps(ctx context.Context, in *ListSweepsRequest, opts ...grpc.CallOption) (*ListSweepsResponse, error)
// lncli: `wallet labeltx`
- // LabelTransaction adds a label to a transaction. If the transaction already
- // has a label the call will fail unless the overwrite bool is set. This will
- // overwrite the existing transaction label. Labels must not be empty, and
- // cannot exceed 500 characters.
+ //LabelTransaction adds a label to a transaction. If the transaction already
+ //has a label the call will fail unless the overwrite bool is set. This will
+ //overwrite the existing transaction label. Labels must not be empty, and
+ //cannot exceed 500 characters.
LabelTransaction(ctx context.Context, in *LabelTransactionRequest, opts ...grpc.CallOption) (*LabelTransactionResponse, error)
// lncli: `wallet psbt fund`
- // FundPsbt creates a fully populated PSBT that contains enough inputs to fund
- // the outputs specified in the template. There are three ways a user can
- // specify what we call the template (a list of inputs and outputs to use in
- // the PSBT): Either as a PSBT packet directly with no coin selection (using
- // the legacy "psbt" field), a PSBT with advanced coin selection support (using
- // the new "coin_select" field) or as a raw RPC message (using the "raw"
- // field).
- // The legacy "psbt" and "raw" modes, the following restrictions apply:
- // 1. If there are no inputs specified in the template, coin selection is
- // performed automatically.
- // 2. If the template does contain any inputs, it is 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.
- //
- // The new "coin_select" mode does not have these restrictions and allows the
- // user to specify a PSBT with inputs and outputs and still perform coin
- // selection on top of that.
- // For all modes this RPC requires any inputs that are specified to be locked
- // by the user (if they belong to this node in the first place).
- //
- // After either selecting or verifying the inputs, all input UTXOs are locked
- // with an internal app ID.
- //
- // A non-zero input_release_after_spend_confs applies a
- // confirmation-controlled lifetime to every input lease this RPC acquires.
- // Those leases ignore wall-clock expiration and release at the requested
- // spend depth or through ReleaseOutput. The RPC fails if the wallet cannot
- // apply this option. Wallet capability is checked even when coin selection
- // does not need to acquire an input lease. A custom_lock_id is required for a
- // confirmation-controlled lease.
- //
- // NOTE: If this method returns without an error, it is the caller's
- // 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 creates a fully populated PSBT that contains enough inputs to fund
+ //the outputs specified in the template. There are three ways a user can
+ //specify what we call the template (a list of inputs and outputs to use in
+ //the PSBT): Either as a PSBT packet directly with no coin selection (using
+ //the legacy "psbt" field), a PSBT with advanced coin selection support (using
+ //the new "coin_select" field) or as a raw RPC message (using the "raw"
+ //field).
+ //The legacy "psbt" and "raw" modes, the following restrictions apply:
+ //1. If there are no inputs specified in the template, coin selection is
+ //performed automatically.
+ //2. If the template does contain any inputs, it is 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.
+ //
+ //The new "coin_select" mode does not have these restrictions and allows the
+ //user to specify a PSBT with inputs and outputs and still perform coin
+ //selection on top of that.
+ //For all modes this RPC requires any inputs that are specified to be locked
+ //by the user (if they belong to this node in the first place).
+ //
+ //After either selecting or verifying the inputs, all input UTXOs are locked
+ //with an internal app ID.
+ //
+ //A non-zero input_release_after_spend_confs applies a
+ //confirmation-controlled lifetime to every input lease this RPC acquires.
+ //Those leases ignore wall-clock expiration and release at the requested
+ //spend depth or through ReleaseOutput. The RPC fails if the wallet cannot
+ //apply this option. Wallet capability is checked even when coin selection
+ //does not need to acquire an input lease. A custom_lock_id is required for a
+ //confirmation-controlled lease.
+ //
+ //NOTE: If this method returns without an error, it is the caller's
+ //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)
// lncli: `wallet psbt sign`
- // 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.
- //
- // 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 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.
+ //
+ //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)
// lncli: `wallet psbt finalize`
- // 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.
- //
- // 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 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.
+ //
+ //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)
}
@@ -646,347 +652,353 @@ func (c *walletKitClient) FinalizePsbt(ctx context.Context, in *FinalizePsbtRequ
// All implementations must embed UnimplementedWalletKitServer
// for forward compatibility
type WalletKitServer interface {
- // ListUnspent returns a list of all utxos spendable by the wallet with a
- // number of confirmations between the specified minimum and maximum. By
- // default, all utxos are listed. To list only the unconfirmed utxos, set
- // the unconfirmed_only to true.
+ //
+ //ListUnspent returns a list of all utxos spendable by the wallet with a
+ //number of confirmations between the specified minimum and maximum. By
+ //default, all utxos are listed. To list only the unconfirmed utxos, set
+ //the unconfirmed_only to true.
ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error)
// lncli: `wallet leaseoutput`
- // LeaseOutput locks an output to the given ID, preventing it from being
- // available for any future coin selection attempts. The absolute time of the
- // lock's expiration is returned. The expiration of the lock can be extended by
- // successive invocations of this RPC. Outputs can be unlocked before their
- // expiration through `ReleaseOutput`.
- //
- // A non-zero release_after_spend_confs selects a confirmation-controlled
- // lifetime. Such a lease ignores its wall-clock expiration and releases at
- // the requested spend depth or through ReleaseOutput. The RPC fails if the
- // wallet cannot apply this option. Renewing the same lease with the same ID
- // and a zero depth preserves an existing non-zero depth.
+ //LeaseOutput locks an output to the given ID, preventing it from being
+ //available for any future coin selection attempts. The absolute time of the
+ //lock's expiration is returned. The expiration of the lock can be extended by
+ //successive invocations of this RPC. Outputs can be unlocked before their
+ //expiration through `ReleaseOutput`.
+ //
+ //A non-zero release_after_spend_confs selects a confirmation-controlled
+ //lifetime. Such a lease ignores its wall-clock expiration and releases at
+ //the requested spend depth or through ReleaseOutput. The RPC fails if the
+ //wallet cannot apply this option. Renewing the same lease with the same ID
+ //and a zero depth preserves an existing non-zero depth.
LeaseOutput(context.Context, *LeaseOutputRequest) (*LeaseOutputResponse, error)
// lncli: `wallet releaseoutput`
- // ReleaseOutput unlocks an output, allowing it to be available for coin
- // selection if it remains unspent. The ID should match the one used to
- // originally lock the output. A retained release-after-spend lease can also be
- // released after its spending transaction has been observed.
+ //ReleaseOutput unlocks an output, allowing it to be available for coin
+ //selection if it remains unspent. The ID should match the one used to
+ //originally lock the output. A retained release-after-spend lease can also be
+ //released after its spending transaction has been observed.
ReleaseOutput(context.Context, *ReleaseOutputRequest) (*ReleaseOutputResponse, error)
// lncli: `wallet listleases`
- // ListLeases lists all currently locked utxos.
+ //ListLeases lists all currently locked utxos.
ListLeases(context.Context, *ListLeasesRequest) (*ListLeasesResponse, error)
- // DeriveNextKey attempts to derive the *next* key within the key family
- // (account in BIP43) specified. This method should return the next external
- // child within this branch.
+ //
+ //DeriveNextKey attempts to derive the *next* key within the key family
+ //(account in BIP43) specified. This method should return the next external
+ //child within this branch.
DeriveNextKey(context.Context, *KeyReq) (*signrpc.KeyDescriptor, error)
- // DeriveKey attempts to derive an arbitrary key specified by the passed
- // KeyLocator.
+ //
+ //DeriveKey attempts to derive an arbitrary key specified by the passed
+ //KeyLocator.
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)
// lncli: `wallet gettx`
- // GetTransaction returns details for a transaction found in the wallet.
+ //GetTransaction returns details for a transaction found in the wallet.
GetTransaction(context.Context, *GetTransactionRequest) (*lnrpc.Transaction, error)
// lncli: `wallet accounts list`
- // 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
- // wallet accounts and return only those matching.
+ //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
+ //wallet accounts and return only those matching.
ListAccounts(context.Context, *ListAccountsRequest) (*ListAccountsResponse, error)
// lncli: `wallet accounts create`
- // XCreateAccount is an experimental API that creates a new named account
- // within the wallet, deriving the account's keys from the wallet's master
- // key.
- //
- // In contrast to ImportAccount, which registers a watch-only account from an
- // externally supplied extended public key, the account created here is fully
- // owned by the wallet: it derives its own addresses and can sign for its own
- // outputs. That makes it usable as an isolated pocket of funds inside a single
- // wallet, because coin selection, change, balance and address derivation can
- // all be scoped to it by name.
- //
- // NOTE: The X prefix marks this API as experimental: it may change or be
- // removed without the usual deprecation period. It additionally requires
- // i_know_what_i_am_doing on release builds, because a seed-only restore does
- // not rediscover the funds an account created here holds; see the recovery
- // note below. That second gate comes off once recovery handles these
- // accounts, at which point the X can be dropped too.
- //
- // NOTE: The wallet must be unlocked, as deriving the account key requires
- // access to the master private key.
- //
- // NOTE: The call is not idempotent, and the account is created before the
- // response is sent. A client that cancels or times out may still have had
- // the account created, in which case its retry fails with "already exists"
- // — indistinguishable from a genuine name clash. Check ListAccounts before
- // retrying.
- //
- // NOTE: The account's address type is permanent and also fixes the type of
- // its change outputs. lnd resolves a custom account name within the key
- // scope implied by the requested address type, so every later call must ask
- // for the address type that maps to the same scope or the account will
- // appear not to exist. NextAddr and NewAddress take lnrpc.AddressType,
- // which has no HYBRID_NESTED_WITNESS_PUBKEY_HASH member: an account created
- // as HYBRID_NESTED_WITNESS_PUBKEY_HASH must be addressed with
- // NESTED_PUBKEY_HASH, which maps to the same BIP-0049Plus scope.
- // TAPROOT_PUBKEY and WITNESS_PUBKEY_HASH map across unchanged.
- //
- // NOTE: Funds held in an account created here are not rediscovered by a
- // seed-only recovery, because lnd's recovery scan only rederives addresses
- // for the wallet's default account (btcwallet's RecoveryManager hardcodes
- // waddrmgr.DefaultAccountNum). They are still recoverable, but only by
- // reconstructing the account first, and the account name is not what has to
- // be reproduced: accounts are derived from an index that btcwallet assigns
- // sequentially per key scope, shared with accounts created by ImportAccount.
- //
- // To keep an account recoverable, record its key scope, the account index
- // (the account's derivation_path in the response), and how many addresses
- // it has issued. To restore: re-create every account in that key scope in
- // their original order so the index counter lands on the same value,
- // re-derive at least as many addresses as were previously issued with
- // NextAddr — a rescan only searches for addresses already present in the
- // wallet database, and a freshly created account has none — and only then
- // rescan with --reset-wallet-transactions.
+ //XCreateAccount is an experimental API that creates a new named account
+ //within the wallet, deriving the account's keys from the wallet's master
+ //key.
+ //
+ //In contrast to ImportAccount, which registers a watch-only account from an
+ //externally supplied extended public key, the account created here is fully
+ //owned by the wallet: it derives its own addresses and can sign for its own
+ //outputs. That makes it usable as an isolated pocket of funds inside a single
+ //wallet, because coin selection, change, balance and address derivation can
+ //all be scoped to it by name.
+ //
+ //NOTE: The X prefix marks this API as experimental: it may change or be
+ //removed without the usual deprecation period. It additionally requires
+ //i_know_what_i_am_doing on release builds, because a seed-only restore does
+ //not rediscover the funds an account created here holds; see the recovery
+ //note below. That second gate comes off once recovery handles these
+ //accounts, at which point the X can be dropped too.
+ //
+ //NOTE: The wallet must be unlocked, as deriving the account key requires
+ //access to the master private key.
+ //
+ //NOTE: The call is not idempotent, and the account is created before the
+ //response is sent. A client that cancels or times out may still have had
+ //the account created, in which case its retry fails with "already exists"
+ //— indistinguishable from a genuine name clash. Check ListAccounts before
+ //retrying.
+ //
+ //NOTE: The account's address type is permanent and also fixes the type of
+ //its change outputs. lnd resolves a custom account name within the key
+ //scope implied by the requested address type, so every later call must ask
+ //for the address type that maps to the same scope or the account will
+ //appear not to exist. NextAddr and NewAddress take lnrpc.AddressType,
+ //which has no HYBRID_NESTED_WITNESS_PUBKEY_HASH member: an account created
+ //as HYBRID_NESTED_WITNESS_PUBKEY_HASH must be addressed with
+ //NESTED_PUBKEY_HASH, which maps to the same BIP-0049Plus scope.
+ //TAPROOT_PUBKEY and WITNESS_PUBKEY_HASH map across unchanged.
+ //
+ //NOTE: Funds held in an account created here are not rediscovered by a
+ //seed-only recovery, because lnd's recovery scan only rederives addresses
+ //for the wallet's default account (btcwallet's RecoveryManager hardcodes
+ //waddrmgr.DefaultAccountNum). They are still recoverable, but only by
+ //reconstructing the account first, and the account name is not what has to
+ //be reproduced: accounts are derived from an index that btcwallet assigns
+ //sequentially per key scope, shared with accounts created by ImportAccount.
+ //
+ //To keep an account recoverable, record its key scope, the account index
+ //(the account's derivation_path in the response), and how many addresses
+ //it has issued. To restore: re-create every account in that key scope in
+ //their original order so the index counter lands on the same value,
+ //re-derive at least as many addresses as were previously issued with
+ //NextAddr — a rescan only searches for addresses already present in the
+ //wallet database, and a freshly created account has none — and only then
+ //rescan with --reset-wallet-transactions.
XCreateAccount(context.Context, *XCreateAccountRequest) (*XCreateAccountResponse, error)
// lncli: `wallet requiredreserve`
- // 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
- // scales with the number of public anchor channels but is capped at a maximum.
+ //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
+ //scales with the number of public anchor channels but is capped at a maximum.
RequiredReserve(context.Context, *RequiredReserveRequest) (*RequiredReserveResponse, error)
// lncli: `wallet addresses list`
- // ListAddresses retrieves all the addresses along with their balance. An
- // account name filter can be provided to filter through all of the
- // wallet accounts and return the addresses of only those matching.
+ //ListAddresses retrieves all the addresses along with their balance. An
+ //account name filter can be provided to filter through all of the
+ //wallet accounts and return the addresses of only those matching.
ListAddresses(context.Context, *ListAddressesRequest) (*ListAddressesResponse, error)
// lncli: `wallet addresses signmessage`
- // SignMessageWithAddr returns the compact signature (base64 encoded) created
- // with the private key of the provided address. This requires the address
- // to be solely based on a public key lock (no scripts). Obviously the internal
- // lnd wallet has to possess the private key of the address otherwise
- // an error is returned.
- //
- // This method aims to provide full compatibility with the bitcoin-core and
- // btcd implementation. Bitcoin-core's algorithm is not specified in a
- // BIP and only applicable for legacy addresses. This method enhances the
- // signing for additional address types: P2WKH, NP2WKH, P2TR.
- // For P2TR addresses this represents a special case. ECDSA is used to create
- // a compact signature which makes the public key of the signature recoverable.
+ //SignMessageWithAddr returns the compact signature (base64 encoded) created
+ //with the private key of the provided address. This requires the address
+ //to be solely based on a public key lock (no scripts). Obviously the internal
+ //lnd wallet has to possess the private key of the address otherwise
+ //an error is returned.
+ //
+ //This method aims to provide full compatibility with the bitcoin-core and
+ //btcd implementation. Bitcoin-core's algorithm is not specified in a
+ //BIP and only applicable for legacy addresses. This method enhances the
+ //signing for additional address types: P2WKH, NP2WKH, P2TR.
+ //For P2TR addresses this represents a special case. ECDSA is used to create
+ //a compact signature which makes the public key of the signature recoverable.
SignMessageWithAddr(context.Context, *SignMessageWithAddrRequest) (*SignMessageWithAddrResponse, error)
// lncli: `wallet addresses verifymessage`
- // VerifyMessageWithAddr returns the validity and the recovered public key of
- // the provided compact signature (base64 encoded). The verification is
- // twofold. First the validity of the signature itself is checked and then
- // it is verified that the recovered public key of the signature equals
- // the public key of the provided address. There is no dependence on the
- // private key of the address therefore also external addresses are allowed
- // to verify signatures.
- // Supported address types are P2PKH, P2WKH, NP2WKH, P2TR.
- //
- // This method is the counterpart of the related signing method
- // (SignMessageWithAddr) and aims to provide full compatibility to
- // bitcoin-core's implementation. Although bitcoin-core/btcd only provide
- // this functionality for legacy addresses this function enhances it to
- // the address types: P2PKH, P2WKH, NP2WKH, P2TR.
- //
- // The verification for P2TR addresses is a special case and requires the
- // ECDSA compact signature to compare the reovered public key to the internal
- // taproot key. The compact ECDSA signature format was used because there
- // are still no known compact signature schemes for schnorr signatures.
+ //VerifyMessageWithAddr returns the validity and the recovered public key of
+ //the provided compact signature (base64 encoded). The verification is
+ //twofold. First the validity of the signature itself is checked and then
+ //it is verified that the recovered public key of the signature equals
+ //the public key of the provided address. There is no dependence on the
+ //private key of the address therefore also external addresses are allowed
+ //to verify signatures.
+ //Supported address types are P2PKH, P2WKH, NP2WKH, P2TR.
+ //
+ //This method is the counterpart of the related signing method
+ //(SignMessageWithAddr) and aims to provide full compatibility to
+ //bitcoin-core's implementation. Although bitcoin-core/btcd only provide
+ //this functionality for legacy addresses this function enhances it to
+ //the address types: P2PKH, P2WKH, NP2WKH, P2TR.
+ //
+ //The verification for P2TR addresses is a special case and requires the
+ //ECDSA compact signature to compare the reovered public key to the internal
+ //taproot key. The compact ECDSA signature format was used because there
+ //are still no known compact signature schemes for schnorr signatures.
VerifyMessageWithAddr(context.Context, *VerifyMessageWithAddrRequest) (*VerifyMessageWithAddrResponse, error)
// lncli: `wallet accounts import`
- // 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.
- //
- // The address type can usually be inferred from the key's version, but may be
- // required for certain keys to map them into the proper scope.
- //
- // For BIP-0044 keys, an address type must be specified as we intend to not
- // 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-0049 keys, an address type must also be specified to make a
- // distinction between the standard BIP-0049 address schema (nested witness
- // pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
- // 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 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.
+ //
+ //The address type can usually be inferred from the key's version, but may be
+ //required for certain keys to map them into the proper scope.
+ //
+ //For BIP-0044 keys, an address type must be specified as we intend to not
+ //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-0049 keys, an address type must also be specified to make a
+ //distinction between the standard BIP-0049 address schema (nested witness
+ //pubkeys everywhere) and our own BIP-0049Plus address schema (nested pubkeys
+ //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)
// lncli: `wallet accounts import-pubkey`
- // ImportPublicKey imports a public key as watch-only into the wallet. The
- // public key is converted into a simple address of the given type and that
- // address script is watched on chain. For Taproot keys, this will only watch
- // the BIP-0086 style output script. Use ImportTapscript for more advanced key
- // spend or script spend outputs.
- //
- // 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
- // supported later on.
+ //ImportPublicKey imports a public key as watch-only into the wallet. The
+ //public key is converted into a simple address of the given type and that
+ //address script is watched on chain. For Taproot keys, this will only watch
+ //the BIP-0086 style output script. Use ImportTapscript for more advanced key
+ //spend or script spend outputs.
+ //
+ //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
+ //supported later on.
ImportPublicKey(context.Context, *ImportPublicKeyRequest) (*ImportPublicKeyResponse, error)
- // ImportTapscript imports a Taproot script and internal key and adds the
- // resulting Taproot output key as a watch-only output script into the wallet.
- // For BIP-0086 style Taproot keys (no root hash commitment and no script spend
- // path) use ImportPublicKey.
//
- // 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
- // supported later on.
+ //ImportTapscript imports a Taproot script and internal key and adds the
+ //resulting Taproot output key as a watch-only output script into the wallet.
+ //For BIP-0086 style Taproot keys (no root hash commitment and no script spend
+ //path) use ImportPublicKey.
//
- // NOTE: Taproot keys imported through this RPC currently _cannot_ be used for
- // funding PSBTs. Only tracking the balance and UTXOs is currently supported.
+ //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
+ //supported later on.
+ //
+ //NOTE: Taproot keys imported through this RPC currently _cannot_ be used for
+ //funding PSBTs. Only tracking the balance and UTXOs is currently supported.
ImportTapscript(context.Context, *ImportTapscriptRequest) (*ImportTapscriptResponse, error)
// lncli: `wallet publishtx`
- // PublishTransaction attempts to publish the passed transaction to the
- // network. Once this returns without an error, the wallet will continually
- // attempt to re-broadcast the transaction on start up, until it enters the
- // chain.
+ //PublishTransaction attempts to publish the passed transaction to the
+ //network. Once this returns without an error, the wallet will continually
+ //attempt to re-broadcast the transaction on start up, until it enters the
+ //chain.
PublishTransaction(context.Context, *Transaction) (*PublishResponse, error)
// lncli: `wallet submitpackage`
- // SubmitPackage submits a package of related transactions (topologically
- // sorted, unconfirmed parents first and the child last) for atomic
- // validation and acceptance. Real package submission is only performed by
- // the bitcoind backend, via the node's submitpackage RPC, which lets a
- // zero-fee v3/TRUC parent be accepted via its fee-paying CPFP child. The
- // btcd backend does not support submitpackage and returns an error. A
- // neutrino light client has no mempool and cannot atomically accept a
- // package; as a best effort it broadcasts the transactions individually and
- // relies on a peer's 1p1c package relay, returning an unverified result
- // (not a package-accept verdict).
+ //SubmitPackage submits a package of related transactions (topologically
+ //sorted, unconfirmed parents first and the child last) for atomic
+ //validation and acceptance. Real package submission is only performed by
+ //the bitcoind backend, via the node's submitpackage RPC, which lets a
+ //zero-fee v3/TRUC parent be accepted via its fee-paying CPFP child. The
+ //btcd backend does not support submitpackage and returns an error. A
+ //neutrino light client has no mempool and cannot atomically accept a
+ //package; as a best effort it broadcasts the transactions individually and
+ //relies on a peer's 1p1c package relay, returning an unverified result
+ //(not a package-accept verdict).
SubmitPackage(context.Context, *SubmitPackageRequest) (*SubmitPackageResponse, error)
// lncli: `wallet removetx`
- // RemoveTransaction attempts to remove the provided transaction from the
- // internal transaction store of the wallet.
+ //RemoveTransaction attempts to remove the provided transaction from the
+ //internal transaction store of the wallet.
RemoveTransaction(context.Context, *GetTransactionRequest) (*RemoveTransactionResponse, error)
- // SendOutputs is similar to the existing sendmany call in Bitcoind, and
- // allows the caller to create a transaction that sends to several outputs at
- // once. This is ideal when wanting to batch create a set of transactions.
+ //
+ //SendOutputs is similar to the existing sendmany call in Bitcoind, and
+ //allows the caller to create a transaction that sends to several outputs at
+ //once. This is ideal when wanting to batch create a set of transactions.
SendOutputs(context.Context, *SendOutputsRequest) (*SendOutputsResponse, error)
// lncli: `wallet estimatefeerate`
- // EstimateFee attempts to query the internal fee estimator of the wallet to
- // determine the fee (in sat/kw) to attach to a transaction in order to
- // achieve the confirmation target.
+ //EstimateFee attempts to query the internal fee estimator of the wallet to
+ //determine the fee (in sat/kw) to attach to a transaction in order to
+ //achieve the confirmation target.
EstimateFee(context.Context, *EstimateFeeRequest) (*EstimateFeeResponse, error)
// lncli: `wallet pendingsweeps`
- // PendingSweeps returns lists of on-chain outputs that lnd is currently
- // attempting to sweep within its central batching engine. Outputs with similar
- // fee rates are batched together in order to sweep them within a single
- // transaction.
- //
- // NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
- // remain supported. This is an advanced API that depends on the internals of
- // the UtxoSweeper, so things may change.
+ //PendingSweeps returns lists of on-chain outputs that lnd is currently
+ //attempting to sweep within its central batching engine. Outputs with similar
+ //fee rates are batched together in order to sweep them within a single
+ //transaction.
+ //
+ //NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
+ //remain supported. This is an advanced API that depends on the internals of
+ //the UtxoSweeper, so things may change.
PendingSweeps(context.Context, *PendingSweepsRequest) (*PendingSweepsResponse, error)
// lncli: `wallet bumpfee`
- // BumpFee is an endpoint that allows users to interact with lnd's sweeper
- // directly. It takes an outpoint from an unconfirmed transaction and sends it
- // to the sweeper for potential fee bumping. Depending on whether the outpoint
- // has been registered in the sweeper (an existing input, e.g., an anchor
- // output) or not (a new input, e.g., an unconfirmed wallet utxo), this will
- // either be an RBF or CPFP attempt.
- //
- // When receiving an input, lnd’s sweeper needs to understand its time
- // sensitivity to make economical fee bumps - internally a fee function is
- // created using the deadline and budget to guide the process. When the
- // deadline is approaching, the fee function will increase the fee rate and
- // perform an RBF.
- //
- // When a force close happens, all the outputs from the force closing
- // transaction will be registered in the sweeper. The sweeper will then handle
- // the creation, publish, and fee bumping of the sweeping transactions.
- // Everytime a new block comes in, unless the sweeping transaction is
- // confirmed, an RBF is attempted. To interfere with this automatic process,
- // users can use BumpFee to specify customized fee rate, budget, deadline, and
- // whether the sweep should happen immediately. It's recommended to call
- // `ListSweeps` to understand the shape of the existing sweeping transaction
- // first - depending on the number of inputs in this transaction, the RBF
- // requirements can be quite different.
- //
- // This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
- // (CPFP), where the child transaction pays for its parent's fee. This can be
- // done by specifying an outpoint within the low fee transaction that is under
- // the control of the wallet.
+ //BumpFee is an endpoint that allows users to interact with lnd's sweeper
+ //directly. It takes an outpoint from an unconfirmed transaction and sends it
+ //to the sweeper for potential fee bumping. Depending on whether the outpoint
+ //has been registered in the sweeper (an existing input, e.g., an anchor
+ //output) or not (a new input, e.g., an unconfirmed wallet utxo), this will
+ //either be an RBF or CPFP attempt.
+ //
+ //When receiving an input, lnd’s sweeper needs to understand its time
+ //sensitivity to make economical fee bumps - internally a fee function is
+ //created using the deadline and budget to guide the process. When the
+ //deadline is approaching, the fee function will increase the fee rate and
+ //perform an RBF.
+ //
+ //When a force close happens, all the outputs from the force closing
+ //transaction will be registered in the sweeper. The sweeper will then handle
+ //the creation, publish, and fee bumping of the sweeping transactions.
+ //Everytime a new block comes in, unless the sweeping transaction is
+ //confirmed, an RBF is attempted. To interfere with this automatic process,
+ //users can use BumpFee to specify customized fee rate, budget, deadline, and
+ //whether the sweep should happen immediately. It's recommended to call
+ //`ListSweeps` to understand the shape of the existing sweeping transaction
+ //first - depending on the number of inputs in this transaction, the RBF
+ //requirements can be quite different.
+ //
+ //This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
+ //(CPFP), where the child transaction pays for its parent's fee. This can be
+ //done by specifying an outpoint within the low fee transaction that is under
+ //the control of the wallet.
BumpFee(context.Context, *BumpFeeRequest) (*BumpFeeResponse, error)
// lncli: `wallet bumpforceclosefee`
- // BumpForceCloseFee is an endpoint that allows users to bump the fee of a
- // channel force close. This only works for channels with option_anchors.
+ //BumpForceCloseFee is an endpoint that allows users to bump the fee of a
+ //channel force close. This only works for channels with option_anchors.
BumpForceCloseFee(context.Context, *BumpForceCloseFeeRequest) (*BumpForceCloseFeeResponse, error)
// lncli: `wallet listsweeps`
- // ListSweeps returns a list of the sweep transactions our node has produced.
- // Note that these sweeps may not be confirmed yet, as we record sweeps on
- // broadcast, not confirmation.
+ //ListSweeps returns a list of the sweep transactions our node has produced.
+ //Note that these sweeps may not be confirmed yet, as we record sweeps on
+ //broadcast, not confirmation.
ListSweeps(context.Context, *ListSweepsRequest) (*ListSweepsResponse, error)
// lncli: `wallet labeltx`
- // LabelTransaction adds a label to a transaction. If the transaction already
- // has a label the call will fail unless the overwrite bool is set. This will
- // overwrite the existing transaction label. Labels must not be empty, and
- // cannot exceed 500 characters.
+ //LabelTransaction adds a label to a transaction. If the transaction already
+ //has a label the call will fail unless the overwrite bool is set. This will
+ //overwrite the existing transaction label. Labels must not be empty, and
+ //cannot exceed 500 characters.
LabelTransaction(context.Context, *LabelTransactionRequest) (*LabelTransactionResponse, error)
// lncli: `wallet psbt fund`
- // FundPsbt creates a fully populated PSBT that contains enough inputs to fund
- // the outputs specified in the template. There are three ways a user can
- // specify what we call the template (a list of inputs and outputs to use in
- // the PSBT): Either as a PSBT packet directly with no coin selection (using
- // the legacy "psbt" field), a PSBT with advanced coin selection support (using
- // the new "coin_select" field) or as a raw RPC message (using the "raw"
- // field).
- // The legacy "psbt" and "raw" modes, the following restrictions apply:
- // 1. If there are no inputs specified in the template, coin selection is
- // performed automatically.
- // 2. If the template does contain any inputs, it is 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.
- //
- // The new "coin_select" mode does not have these restrictions and allows the
- // user to specify a PSBT with inputs and outputs and still perform coin
- // selection on top of that.
- // For all modes this RPC requires any inputs that are specified to be locked
- // by the user (if they belong to this node in the first place).
- //
- // After either selecting or verifying the inputs, all input UTXOs are locked
- // with an internal app ID.
- //
- // A non-zero input_release_after_spend_confs applies a
- // confirmation-controlled lifetime to every input lease this RPC acquires.
- // Those leases ignore wall-clock expiration and release at the requested
- // spend depth or through ReleaseOutput. The RPC fails if the wallet cannot
- // apply this option. Wallet capability is checked even when coin selection
- // does not need to acquire an input lease. A custom_lock_id is required for a
- // confirmation-controlled lease.
- //
- // NOTE: If this method returns without an error, it is the caller's
- // 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 creates a fully populated PSBT that contains enough inputs to fund
+ //the outputs specified in the template. There are three ways a user can
+ //specify what we call the template (a list of inputs and outputs to use in
+ //the PSBT): Either as a PSBT packet directly with no coin selection (using
+ //the legacy "psbt" field), a PSBT with advanced coin selection support (using
+ //the new "coin_select" field) or as a raw RPC message (using the "raw"
+ //field).
+ //The legacy "psbt" and "raw" modes, the following restrictions apply:
+ //1. If there are no inputs specified in the template, coin selection is
+ //performed automatically.
+ //2. If the template does contain any inputs, it is 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.
+ //
+ //The new "coin_select" mode does not have these restrictions and allows the
+ //user to specify a PSBT with inputs and outputs and still perform coin
+ //selection on top of that.
+ //For all modes this RPC requires any inputs that are specified to be locked
+ //by the user (if they belong to this node in the first place).
+ //
+ //After either selecting or verifying the inputs, all input UTXOs are locked
+ //with an internal app ID.
+ //
+ //A non-zero input_release_after_spend_confs applies a
+ //confirmation-controlled lifetime to every input lease this RPC acquires.
+ //Those leases ignore wall-clock expiration and release at the requested
+ //spend depth or through ReleaseOutput. The RPC fails if the wallet cannot
+ //apply this option. Wallet capability is checked even when coin selection
+ //does not need to acquire an input lease. A custom_lock_id is required for a
+ //confirmation-controlled lease.
+ //
+ //NOTE: If this method returns without an error, it is the caller's
+ //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)
// lncli: `wallet psbt sign`
- // 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.
- //
- // 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 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.
+ //
+ //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)
// lncli: `wallet psbt finalize`
- // 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.
- //
- // 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 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.
+ //
+ //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)
mustEmbedUnimplementedWalletKitServer()
}
### lnrpc/walletunlocker.pb.go
@@ -23,13 +23,15 @@ const (
type GenSeedRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // aezeed_passphrase is an optional user provided passphrase that will be used
- // to encrypt the generated aezeed cipher seed. When using REST, this field
- // must be encoded as base64.
+ //
+ //aezeed_passphrase is an optional user provided passphrase that will be used
+ //to encrypt the generated aezeed cipher seed. When using REST, this field
+ //must be encoded as base64.
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
- // specified, then a fresh set of randomness will be used to create the seed.
- // When using REST, this field must be encoded as base64.
+ //
+ //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.
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -81,14 +83,16 @@ func (x *GenSeedRequest) GetSeedEntropy() []byte {
type GenSeedResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // 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
- // to this cipher seed.
+ //
+ //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
+ //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
+ //to this cipher seed.
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
- // cipher text before run through our mnemonic encoding scheme.
+ //
+ //enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -140,67 +144,77 @@ func (x *GenSeedResponse) GetEncipheredSeed() []byte {
type InitWalletRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // password is required to unlock the daemon. When using REST, this field
- // must be encoded as base64.
+ //
+ //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
+ //password is required to unlock the daemon. 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"`
- // 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
- // GenSeed method, or be an existing seed.
+ //
+ //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
+ //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"`
- // aezeed_passphrase is an optional user provided passphrase that will be used
- // to encrypt the generated aezeed cipher seed. When using REST, this field
- // must be encoded as base64.
+ //
+ //aezeed_passphrase is an optional user provided passphrase that will be used
+ //to encrypt the generated aezeed cipher seed. When using REST, this field
+ //must be encoded as base64.
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
- // when restoring a wallet seed. The recovery window applies to each
- // individual branch of the BIP44 derivation paths. Supplying a recovery
- // window of zero indicates that no addresses should be recovered, such after
- // the first initialization of the wallet.
+ //
+ //recovery_window is an optional argument specifying the address lookahead
+ //when restoring a wallet seed. The recovery window applies to each
+ //individual branch of the BIP44 derivation paths. Supplying a recovery
+ //window of zero indicates that no addresses should be recovered, such after
+ //the first initialization of the wallet.
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
- // 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
- // 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
- // recover the funds in each channel from a remote force closed transaction.
+ //
+ //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
+ //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
+ //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.
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
- // 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
- // RPC as otherwise all access to the daemon will be lost!
+ //
+ //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
+ //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!
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
- // 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
- // 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
- // SegWit only (BIP49/84) derivation paths and funds from custom/non-default
- // 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
- // 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
- // extended_master_key_birthday_timestamp or a "safe" default value will be
- // used.
+ //
+ //extended_master_key is an alternative to specifying cipher_seed_mnemonic and
+ //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
+ //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
+ //SegWit only (BIP49/84) derivation paths and funds from custom/non-default
+ //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
+ //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
+ //extended_master_key_birthday_timestamp or a "safe" default value will be
+ //used.
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
- // 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
- // 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
- // which case lnd will start scanning from the first SegWit block (481824 on
- // mainnet).
+ //
+ //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
+ //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
+ //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
+ //mainnet).
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
- // 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
- // 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.
+ //
+ //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
+ //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
+ //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"`
- // 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
- // on its own.
+ //
+ //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
+ //on its own.
MacaroonRootKey []byte `protobuf:"bytes,10,opt,name=macaroon_root_key,json=macaroonRootKey,proto3" json:"macaroon_root_key,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -308,11 +322,12 @@ func (x *InitWalletRequest) GetMacaroonRootKey() []byte {
type InitWalletResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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,
- // 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
- // daemon, together with other macaroon files.
+ //
+ //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,
+ //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
+ //daemon, together with other macaroon files.
AdminMacaroon []byte `protobuf:"bytes,1,opt,name=admin_macaroon,json=adminMacaroon,proto3" json:"admin_macaroon,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -357,22 +372,25 @@ func (x *InitWalletResponse) GetAdminMacaroon() []byte {
type WatchOnly struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // 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
- // scanning from the first SegWit block (481824 on mainnet).
+ //
+ //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
+ //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
+ //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"`
- // 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
- // required by some hardware wallets for proper identification and signing. The
- // bytes must be in big-endian order.
+ //
+ //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
+ //required by some hardware wallets for proper identification and signing. The
+ //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"`
- // 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
- // 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
- // defined in `keychain/derivation.go` (currently indices 0 to 9).
+ //
+ //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
+ //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
+ //defined in `keychain/derivation.go` (currently indices 0 to 9).
Accounts []*WatchOnlyAccount `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -431,20 +449,24 @@ func (x *WatchOnly) GetAccounts() []*WatchOnlyAccount {
type WatchOnlyAccount struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Purpose is the first number in the derivation path, must be either 49, 84
- // or 1017.
+ //
+ //Purpose is the first number in the derivation path, must be either 49, 84
+ //or 1017.
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
- // for purposes 49 and 84. It only needs to be set to 1 for purpose 1017 on
- // testnet or regtest.
+ //
+ //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
+ //testnet or regtest.
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
- // 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
- // one account for each of the key families defined in `keychain/derivation.go`
- // (currently indices 0 to 9)
+ //
+ //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
+ //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`
+ //(currently indices 0 to 9)
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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -510,25 +532,29 @@ func (x *WatchOnlyAccount) GetXpub() string {
type UnlockWalletRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // function properly. When using REST, this field must be encoded as base64.
+ //
+ //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
+ //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"`
- // recovery_window is an optional argument specifying the address lookahead
- // when restoring a wallet seed. The recovery window applies to each
- // individual branch of the BIP44 derivation paths. Supplying a recovery
- // window of zero indicates that no addresses should be recovered, such after
- // the first initialization of the wallet.
+ //
+ //recovery_window is an optional argument specifying the address lookahead
+ //when restoring a wallet seed. The recovery window applies to each
+ //individual branch of the BIP44 derivation paths. Supplying a recovery
+ //window of zero indicates that no addresses should be recovered, such after
+ //the first initialization of the wallet.
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
- // 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
- // 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
- // recover the funds in each channel from a remote force closed transaction.
+ //
+ //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
+ //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
+ //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.
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
- // any *.macaroon files in its file system.
+ //
+ //stateless_init is an optional argument instructing the daemon NOT to create
+ //any *.macaroon files in its file system.
StatelessInit bool `protobuf:"varint,4,opt,name=stateless_init,json=statelessInit,proto3" json:"stateless_init,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -630,20 +656,24 @@ func (*UnlockWalletResponse) Descriptor() ([]byte, []int) {
type ChangePasswordRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // current_password should be the current valid passphrase used to unlock the
- // daemon. When using REST, this field must be encoded as base64.
+ //
+ //current_password should be the current valid passphrase used to unlock the
+ //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"`
- // 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.
+ //
+ //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.
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
- // 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
- // RPC as otherwise all access to the daemon will be lost!
+ //
+ //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
+ //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!
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
- // rotate the macaroon root key when set to true. This will invalidate all
- // previously generated macaroons.
+ //
+ //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
+ //previously generated macaroons.
NewMacaroonRootKey bool `protobuf:"varint,4,opt,name=new_macaroon_root_key,json=newMacaroonRootKey,proto3" json:"new_macaroon_root_key,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -709,12 +739,13 @@ func (x *ChangePasswordRequest) GetNewMacaroonRootKey() bool {
type ChangePasswordResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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
- // 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
- // safely by the caller. Otherwise a copy of this macaroon is also persisted on
- // disk by the daemon, together with other macaroon files.
+ //
+ //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
+ //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
+ //safely by the caller. Otherwise a copy of this macaroon is also persisted on
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/walletunlocker_grpc.pb.go
@@ -18,35 +18,37 @@ 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.
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.
//
- // 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 is the first method that should be used to instantiate a new lnd
+ //instance. This method allows a caller to generate a new aezeed cipher seed
+ //given an optional passphrase. If provided, the passphrase will be necessary
+ //to decrypt the cipherseed to expose the internal wallet seed.
+ //
+ //Once the cipherseed is obtained and verified by the user, the InitWallet
+ //method should be used to commit the newly generated seed, and create the
+ //wallet.
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.
//
- // In the case of a recovery scenario, the user can also specify their aezeed
- // mnemonic and passphrase. If set, then the daemon will use this prior state
- // to initialize its internal wallet.
+ //InitWallet is used when lnd is starting up for the first time to fully
+ //initialize the daemon and its internal wallet. At the very least a wallet
+ //password must be provided. This will be used to encrypt sensitive material
+ //on disk.
+ //
+ //In the case of a recovery scenario, the user can also specify their aezeed
+ //mnemonic and passphrase. If set, then the daemon will use this prior state
+ //to initialize its internal wallet.
//
- // Alternatively, this can be used along with the GenSeed RPC to obtain a
- // seed, then present it to the user. Once it has been verified by the user,
- // the seed can be fed into this RPC in order to commit the new wallet.
+ //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)
// lncli: `unlock`
- // UnlockWallet is used at startup of lnd to provide a password to unlock
- // the wallet database.
+ //UnlockWallet is used at startup of lnd to provide a password to unlock
+ //the wallet database.
UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error)
// lncli: `changepassword`
- // ChangePassword changes the password of the encrypted wallet. This will
- // automatically unlock the wallet database if successful.
+ //ChangePassword changes the password of the encrypted wallet. This will
+ //automatically unlock the wallet database if successful.
ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error)
}
@@ -98,35 +100,37 @@ func (c *walletUnlockerClient) ChangePassword(ctx context.Context, in *ChangePas
// All implementations must embed UnimplementedWalletUnlockerServer
// for forward compatibility
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.
//
- // 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 is the first method that should be used to instantiate a new lnd
+ //instance. This method allows a caller to generate a new aezeed cipher seed
+ //given an optional passphrase. If provided, the passphrase will be necessary
+ //to decrypt the cipherseed to expose the internal wallet seed.
+ //
+ //Once the cipherseed is obtained and verified by the user, the InitWallet
+ //method should be used to commit the newly generated seed, and create the
+ //wallet.
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.
//
- // In the case of a recovery scenario, the user can also specify their aezeed
- // mnemonic and passphrase. If set, then the daemon will use this prior state
- // to initialize its internal wallet.
+ //InitWallet is used when lnd is starting up for the first time to fully
+ //initialize the daemon and its internal wallet. At the very least a wallet
+ //password must be provided. This will be used to encrypt sensitive material
+ //on disk.
+ //
+ //In the case of a recovery scenario, the user can also specify their aezeed
+ //mnemonic and passphrase. If set, then the daemon will use this prior state
+ //to initialize its internal wallet.
//
- // Alternatively, this can be used along with the GenSeed RPC to obtain a
- // seed, then present it to the user. Once it has been verified by the user,
- // the seed can be fed into this RPC in order to commit the new wallet.
+ //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)
// lncli: `unlock`
- // UnlockWallet is used at startup of lnd to provide a password to unlock
- // the wallet database.
+ //UnlockWallet is used at startup of lnd to provide a password to unlock
+ //the wallet database.
UnlockWallet(context.Context, *UnlockWalletRequest) (*UnlockWalletResponse, error)
// lncli: `changepassword`
- // ChangePassword changes the password of the encrypted wallet. This will
- // automatically unlock the wallet database if successful.
+ //ChangePassword changes the password of the encrypted wallet. This will
+ //automatically unlock the wallet database if successful.
ChangePassword(context.Context, *ChangePasswordRequest) (*ChangePasswordResponse, error)
mustEmbedUnimplementedWalletUnlockerServer()
}
### lnrpc/watchonlyrpc/watchonly.pb.go
@@ -25,13 +25,15 @@ const (
type SignCoordinatorRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // A unique request ID of a SignCoordinator gRPC request. Useful for mapping
- // requests to responses.
- // Note that request_id 1 is reserved for the handshake with between
- // watch-only node and the remote signer.
+ //
+ //A unique request ID of a SignCoordinator gRPC request. Useful for mapping
+ //requests to responses.
+ //Note that request_id 1 is reserved for the handshake with between
+ //watch-only node and the remote signer.
RequestId uint64 `protobuf:"varint,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
- // Messages between the watch-only node and the remote signer can only be of
- // certain types.
+ //
+ //Messages between the watch-only node and the remote signer can only be of
+ //certain types.
//
// Types that are valid to be assigned to SignRequestType:
//
@@ -209,71 +211,83 @@ type isSignCoordinatorRequest_SignRequestType interface {
}
type SignCoordinatorRequest_RegistrationResponse struct {
- // The Registration Response message is returned by the watch-only lnd as
- // a response to SignerRegistration message.
+ //
+ //The Registration Response message is returned by the watch-only lnd as
+ //a response to SignerRegistration message.
RegistrationResponse *RegistrationResponse `protobuf:"bytes,2,opt,name=registration_response,json=registrationResponse,proto3,oneof"`
}
type SignCoordinatorRequest_Ping struct {
- // To ensure that the remote signer is still active and alive, the
- // watch-only lnd can send a Ping message to the remote signer, which
- // should then respond with the respective Pong message.
+ //
+ //To ensure that the remote signer is still active and alive, the
+ //watch-only lnd can send a Ping message to the remote signer, which
+ //should then respond with the respective Pong message.
Ping bool `protobuf:"varint,3,opt,name=ping,proto3,oneof"`
}
type SignCoordinatorRequest_SharedKeyRequest struct {
- // Requests a shared public key from the remote signer.
+ //
+ //Requests a shared public key from the remote signer.
SharedKeyRequest *signrpc.SharedKeyRequest `protobuf:"bytes,4,opt,name=shared_key_request,json=sharedKeyRequest,proto3,oneof"`
}
type SignCoordinatorRequest_SignMessageReq struct {
- // Requests that the remote signer signs the passed message.
+ //
+ //Requests that the remote signer signs the passed message.
SignMessageReq *signrpc.SignMessageReq `protobuf:"bytes,5,opt,name=sign_message_req,json=signMessageReq,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2SessionRequest struct {
- // Requests a MuSig2 Session of the remote signer.
+ //
+ //Requests a MuSig2 Session of the remote signer.
MuSig2SessionRequest *signrpc.MuSig2SessionRequest `protobuf:"bytes,6,opt,name=mu_sig2_session_request,json=muSig2SessionRequest,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2RegisterNoncesRequest struct {
- // Requests that the remote signer registers a nonce with the referenced
- // MuSig2 Session.
+ //
+ //Requests that the remote signer registers a nonce with the referenced
+ //MuSig2 Session.
MuSig2RegisterNoncesRequest *signrpc.MuSig2RegisterNoncesRequest `protobuf:"bytes,7,opt,name=mu_sig2_register_nonces_request,json=muSig2RegisterNoncesRequest,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2CombinedNoncesReq struct {
- // Requests that the remote signer registers a combined nonce with the
- // referenced MuSig2 Session.
+ //
+ //Requests that the remote signer registers a combined nonce with the
+ //referenced MuSig2 Session.
MuSig2CombinedNoncesReq *signrpc.MuSig2RegisterCombinedNonceRequest `protobuf:"bytes,8,opt,name=mu_sig2_combined_nonces_req,json=muSig2CombinedNoncesReq,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2GetCombinedNoncesReq struct {
- // Requests that the remote signer gets a combined nonce with the
- // referenced MuSig2 Session.
+ //
+ //Requests that the remote signer gets a combined nonce with the
+ //referenced MuSig2 Session.
MuSig2GetCombinedNoncesReq *signrpc.MuSig2GetCombinedNonceRequest `protobuf:"bytes,9,opt,name=mu_sig2_get_combined_nonces_req,json=muSig2GetCombinedNoncesReq,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2SignRequest struct {
- // Requests that the remote signer signs the passed message digest with
- // the referenced MuSig2 Session.
+ //
+ //Requests that the remote signer signs the passed message digest with
+ //the referenced MuSig2 Session.
MuSig2SignRequest *signrpc.MuSig2SignRequest `protobuf:"bytes,10,opt,name=mu_sig2_sign_request,json=muSig2SignRequest,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2CombineSigRequest struct {
- // Requests that the remote signer combines and adds the passed partial
- // signatures for the referenced MuSig2 Session.
+ //
+ //Requests that the remote signer combines and adds the passed partial
+ //signatures for the referenced MuSig2 Session.
MuSig2CombineSigRequest *signrpc.MuSig2CombineSigRequest `protobuf:"bytes,11,opt,name=mu_sig2_combine_sig_request,json=muSig2CombineSigRequest,proto3,oneof"`
}
type SignCoordinatorRequest_MuSig2CleanupRequest struct {
- // Requests that the remote signer removes/cleans up the referenced
- // MuSig2 session.
+ //
+ //Requests that the remote signer removes/cleans up the referenced
+ //MuSig2 session.
MuSig2CleanupRequest *signrpc.MuSig2CleanupRequest `protobuf:"bytes,12,opt,name=mu_sig2_cleanup_request,json=muSig2CleanupRequest,proto3,oneof"`
}
type SignCoordinatorRequest_SignPsbtRequest struct {
- // Requests that the remote signer signs the passed PSBT.
+ //
+ //Requests that the remote signer signs the passed PSBT.
SignPsbtRequest *walletrpc.SignPsbtRequest `protobuf:"bytes,13,opt,name=sign_psbt_request,json=signPsbtRequest,proto3,oneof"`
}
@@ -305,9 +319,11 @@ func (*SignCoordinatorRequest_SignPsbtRequest) isSignCoordinatorRequest_SignRequ
type SignCoordinatorResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The request ID this response refers to.
+ //
+ //The request ID this response refers to.
RefRequestId uint64 `protobuf:"varint,1,opt,name=ref_request_id,json=refRequestId,proto3" json:"ref_request_id,omitempty"`
- // The remote signer responses can only be of certain types.
+ //
+ //The remote signer responses can only be of certain types.
//
// Types that are valid to be assigned to SignResponseType:
//
@@ -495,79 +511,92 @@ type isSignCoordinatorResponse_SignResponseType interface {
}
type SignCoordinatorResponse_SignerRegistration struct {
- // The Signer Registration message is sent by the remote signer when it
- // connects to the watch-only lnd node, to initialize a handshake between
- // the nodes.
+ //
+ //The Signer Registration message is sent by the remote signer when it
+ //connects to the watch-only lnd node, to initialize a handshake between
+ //the nodes.
SignerRegistration *SignerRegistration `protobuf:"bytes,2,opt,name=signer_registration,json=signerRegistration,proto3,oneof"`
}
type SignCoordinatorResponse_Pong struct {
- // To ensure that the remote signer is still active and alive, the
- // watch-only node can send a Ping message to remote signer. This Pong
- // message should then be sent by the remote signer to respond to the Ping
- // message.
+ //
+ //To ensure that the remote signer is still active and alive, the
+ //watch-only node can send a Ping message to remote signer. This Pong
+ //message should then be sent by the remote signer to respond to the Ping
+ //message.
Pong bool `protobuf:"varint,3,opt,name=pong,proto3,oneof"`
}
type SignCoordinatorResponse_SharedKeyResponse struct {
- // The remote signer's corresponding response to a Shared Key request.
+ //
+ //The remote signer's corresponding response to a Shared Key request.
SharedKeyResponse *signrpc.SharedKeyResponse `protobuf:"bytes,4,opt,name=shared_key_response,json=sharedKeyResponse,proto3,oneof"`
}
type SignCoordinatorResponse_SignMessageResp struct {
- // The remote signer's corresponding response to a Sign Message request.
+ //
+ //The remote signer's corresponding response to a Sign Message request.
SignMessageResp *signrpc.SignMessageResp `protobuf:"bytes,5,opt,name=sign_message_resp,json=signMessageResp,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2SessionResponse struct {
- // The remote signer's corresponding response to a Mu Sig2 Session
- // request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Session
+ //request.
MuSig2SessionResponse *signrpc.MuSig2SessionResponse `protobuf:"bytes,6,opt,name=mu_sig2_session_response,json=muSig2SessionResponse,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2RegisterNoncesResponse struct {
- // The remote signer's corresponding response to a Mu Sig2 Register Nonces
- // request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Register Nonces
+ //request.
MuSig2RegisterNoncesResponse *signrpc.MuSig2RegisterNoncesResponse `protobuf:"bytes,7,opt,name=mu_sig2_register_nonces_response,json=muSig2RegisterNoncesResponse,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2CombNoncesResp struct {
- // The remote signer's corresponding response to a Mu Sig2 Register
- // Combined Nonces request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Register
+ //Combined Nonces request.
MuSig2CombNoncesResp *signrpc.MuSig2RegisterCombinedNonceResponse `protobuf:"bytes,8,opt,name=mu_sig2_comb_nonces_resp,json=muSig2CombNoncesResp,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2GetCombNoncesResp struct {
- // The remote signer's corresponding response to a Mu Sig2 Get Combined
- // Nonces request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Get Combined
+ //Nonces request.
MuSig2GetCombNoncesResp *signrpc.MuSig2GetCombinedNonceResponse `protobuf:"bytes,9,opt,name=mu_sig2_get_comb_nonces_resp,json=muSig2GetCombNoncesResp,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2SignResponse struct {
- // The remote signer's corresponding response to a Mu Sig2 Sign request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Sign request.
MuSig2SignResponse *signrpc.MuSig2SignResponse `protobuf:"bytes,10,opt,name=mu_sig2_sign_response,json=muSig2SignResponse,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2CombineSigResponse struct {
- // The remote signer's corresponding response to a Mu Sig2 Combine Sig
- // request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Combine Sig
+ //request.
MuSig2CombineSigResponse *signrpc.MuSig2CombineSigResponse `protobuf:"bytes,11,opt,name=mu_sig2_combine_sig_response,json=muSig2CombineSigResponse,proto3,oneof"`
}
type SignCoordinatorResponse_MuSig2CleanupResponse struct {
- // The remote signer's corresponding response to a Mu Sig2 Cleanup
- // request.
+ //
+ //The remote signer's corresponding response to a Mu Sig2 Cleanup
+ //request.
MuSig2CleanupResponse *signrpc.MuSig2CleanupResponse `protobuf:"bytes,12,opt,name=mu_sig2_cleanup_response,json=muSig2CleanupResponse,proto3,oneof"`
}
type SignCoordinatorResponse_SignPsbtResponse struct {
- // The remote signer's corresponding response to a Sign Psbt request.
+ //
+ //The remote signer's corresponding response to a Sign Psbt request.
SignPsbtResponse *walletrpc.SignPsbtResponse `protobuf:"bytes,13,opt,name=sign_psbt_response,json=signPsbtResponse,proto3,oneof"`
}
type SignCoordinatorResponse_SignerError struct {
- // If the remote signer encounters an error while processing a request, it
- // will respond with a SignerError message that details the error.
+ //
+ //If the remote signer encounters an error while processing a request, it
+ //will respond with a SignerError message that details the error.
SignerError *SignerError `protobuf:"bytes,14,opt,name=signer_error,json=signerError,proto3,oneof"`
}
@@ -647,12 +676,14 @@ func (x *SignerError) GetError() string {
type SignerRegistration struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The registration challenge allows the remote signer to pass data that will
- // be signed by the watch-only lnd. The resulting signature will be returned in
- // the RegistrationResponse message.
+ //
+ //The registration challenge allows the remote signer to pass data that will
+ //be signed by the watch-only lnd. The resulting signature will be returned in
+ //the RegistrationResponse message.
RegistrationChallenge []byte `protobuf:"bytes,1,opt,name=registration_challenge,json=registrationChallenge,proto3" json:"registration_challenge,omitempty"`
- // The registration info contains details about the remote signer that may be
- // useful for the watch-only lnd.
+ //
+ //The registration info contains details about the remote signer that may be
+ //useful for the watch-only lnd.
RegistrationInfo string `protobuf:"bytes,2,opt,name=registration_info,json=registrationInfo,proto3" json:"registration_info,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -704,8 +735,9 @@ func (x *SignerRegistration) GetRegistrationInfo() string {
type RegistrationResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The registration response indicates either a successful registration or an
- // error.
+ //
+ //The registration response indicates either a successful registration or an
+ //error.
//
// Types that are valid to be assigned to RegistrationResponseType:
//
@@ -776,14 +808,16 @@ type isRegistrationResponse_RegistrationResponseType interface {
}
type RegistrationResponse_RegistrationComplete struct {
- // Sent by the watch-only lnd when the remote signer registration is
- // successful.
+ //
+ //Sent by the watch-only lnd when the remote signer registration is
+ //successful.
RegistrationComplete *RegistrationComplete `protobuf:"bytes,1,opt,name=registration_complete,json=registrationComplete,proto3,oneof"`
}
type RegistrationResponse_RegistrationError struct {
- // Contains details about any errors that occurred during remote signer
- // registration.
+ //
+ //Contains details about any errors that occurred during remote signer
+ //registration.
RegistrationError string `protobuf:"bytes,2,opt,name=registration_error,json=registrationError,proto3,oneof"`
}
@@ -793,11 +827,13 @@ func (*RegistrationResponse_RegistrationError) isRegistrationResponse_Registrati
type RegistrationComplete struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Holds the signature generated by the watch-only node when signing the
- // registration_challenge provided by the remote signer in SignerRegistration.
+ //
+ //Holds the signature generated by the watch-only node when signing the
+ //registration_challenge provided by the remote signer in SignerRegistration.
Signature string `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
- // Contains information about the watch-only lnd that may be useful for the
- // remote signer.
+ //
+ //Contains information about the watch-only lnd that may be useful for the
+ //remote signer.
RegistrationInfo string `protobuf:"bytes,2,opt,name=registration_info,json=registrationInfo,proto3" json:"registration_info,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/watchtowerrpc/watchtower_grpc.pb.go
@@ -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.
type WatchtowerClient interface {
// lncli: `tower info`
- // GetInfo returns general information concerning the companion watchtower
- // including its public key and URIs where the server is currently
- // listening for clients.
+ //GetInfo returns general information concerning the companion watchtower
+ //including its public key and URIs where the server is currently
+ //listening for clients.
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
type WatchtowerServer interface {
// lncli: `tower info`
- // GetInfo returns general information concerning the companion watchtower
- // including its public key and URIs where the server is currently
- // listening for clients.
+ //GetInfo returns general information concerning the companion watchtower
+ //including its public key and URIs where the server is currently
+ //listening for clients.
GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error)
mustEmbedUnimplementedWatchtowerServer()
}
### lnrpc/wtclientrpc/wtclient.pb.go
@@ -167,9 +167,10 @@ type RemoveTowerRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The identifying public key of the watchtower to remove.
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
- // is stale. Otherwise, the watchtower will no longer be used for future
- // session negotiations and backups.
+ //
+ //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
+ //session negotiations and backups.
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -501,24 +502,29 @@ func (x *GetTowerInfoRequest) GetExcludeExhaustedSessions() bool {
type TowerSession struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The total number of successful backups that have been made to the
- // watchtower session.
+ //
+ //The total number of successful backups that have been made to the
+ //watchtower session.
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
- // acknowledged by the watchtower.
+ //
+ //The total number of backups in the session that are currently pending to be
+ //acknowledged by the watchtower.
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.
MaxBackups uint32 `protobuf:"varint,3,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"`
- // Deprecated, use sweep_sat_per_vbyte.
- // 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.
+ //
+ //Deprecated, use sweep_sat_per_vbyte.
+ //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.
//
// Deprecated: Marked as deprecated in wtclientrpc/wtclient.proto.
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 justice transaction in the event of a channel breach.
+ //
+ //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.
SweepSatPerVbyte uint32 `protobuf:"varint,5,opt,name=sweep_sat_per_vbyte,json=sweepSatPerVbyte,proto3" json:"sweep_sat_per_vbyte,omitempty"`
- // The ID of the session.
+ //
+ //The ID of the session.
Id []byte `protobuf:"bytes,6,opt,name=id,proto3" json:"id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -912,14 +918,17 @@ func (*StatsRequest) Descriptor() ([]byte, []int) {
type StatsResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The total number of backups made to all active and exhausted watchtower
- // sessions.
+ //
+ //The total number of backups made to all active and exhausted watchtower
+ //sessions.
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
- // active and exhausted watchtower sessions.
+ //
+ //The total number of backups that are pending to be acknowledged by all
+ //active and exhausted watchtower sessions.
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
- // sessions have failed to acknowledge.
+ //
+ //The total number of backups that all active and exhausted watchtower
+ //sessions have failed to acknowledge.
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.
NumSessionsAcquired uint32 `protobuf:"varint,4,opt,name=num_sessions_acquired,json=numSessionsAcquired,proto3" json:"num_sessions_acquired,omitempty"`
@@ -996,7 +1005,8 @@ func (x *StatsResponse) GetNumSessionsExhausted() uint32 {
type PolicyRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // 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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -1041,17 +1051,20 @@ func (x *PolicyRequest) GetPolicyType() PolicyType {
type PolicyResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // The maximum number of updates each session we negotiate with watchtowers
- // should allow.
+ //
+ //The maximum number of updates each session we negotiate with watchtowers
+ //should allow.
MaxUpdates uint32 `protobuf:"varint,1,opt,name=max_updates,json=maxUpdates,proto3" json:"max_updates,omitempty"`
- // Deprecated, use sweep_sat_per_vbyte.
- // The fee rate, in satoshis per vbyte, that will be used by watchtowers for
- // justice transactions in response to channel breaches.
+ //
+ //Deprecated, use sweep_sat_per_vbyte.
+ //The fee rate, in satoshis per vbyte, that will be used by watchtowers for
+ //justice transactions in response to channel breaches.
//
// Deprecated: Marked as deprecated in wtclientrpc/wtclient.proto.
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
- // justice transactions in response to channel breaches.
+ //
+ //The fee rate, in satoshis per vbyte, that will be used by watchtowers for
+ //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"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
### lnrpc/wtclientrpc/wtclient_grpc.pb.go
@@ -19,37 +19,37 @@ 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.
type WatchtowerClientClient interface {
// lncli: `wtclient add`
- // AddTower adds a new watchtower reachable at the given address and
- // considers it for new sessions. If the watchtower already exists, then
- // any new addresses included will be considered when dialing it for
- // session negotiations and backups.
+ //AddTower adds a new watchtower reachable at the given address and
+ //considers it for new sessions. If the watchtower already exists, then
+ //any new addresses included will be considered when dialing it for
+ //session negotiations and backups.
AddTower(ctx context.Context, in *AddTowerRequest, opts ...grpc.CallOption) (*AddTowerResponse, error)
// lncli: `wtclient remove`
- // RemoveTower removes a watchtower from being considered for future session
- // negotiations and from being used for any subsequent backups until it's added
- // again. If an address is provided, then this RPC only serves as a way of
- // removing the address from the watchtower instead.
+ //RemoveTower removes a watchtower from being considered for future session
+ //negotiations and from being used for any subsequent backups until it's added
+ //again. If an address is provided, then this RPC only serves as a way of
+ //removing the address from the watchtower instead.
RemoveTower(ctx context.Context, in *RemoveTowerRequest, opts ...grpc.CallOption) (*RemoveTowerResponse, error)
// lncli: `wtclient deactivate`
- // DeactivateTower sets the given tower's status to inactive so that it
- // is not considered for session negotiation. Its sessions will also not
- // be used while the tower is inactive.
+ //DeactivateTower sets the given tower's status to inactive so that it
+ //is not considered for session negotiation. Its sessions will also not
+ //be used while the tower is inactive.
DeactivateTower(ctx context.Context, in *DeactivateTowerRequest, opts ...grpc.CallOption) (*DeactivateTowerResponse, error)
// lncli: `wtclient session terminate`
- // Terminate terminates the given session and marks it as terminal so that
- // it is not used for backups anymore.
+ //Terminate terminates the given session and marks it as terminal so that
+ //it is not used for backups anymore.
TerminateSession(ctx context.Context, in *TerminateSessionRequest, opts ...grpc.CallOption) (*TerminateSessionResponse, error)
// lncli: `wtclient towers`
- // 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)
// lncli: `wtclient tower`
- // GetTowerInfo retrieves information for a registered watchtower.
+ //GetTowerInfo retrieves information for a registered watchtower.
GetTowerInfo(ctx context.Context, in *GetTowerInfoRequest, opts ...grpc.CallOption) (*Tower, error)
// lncli: `wtclient stats`
- // Stats returns the in-memory statistics of the client since startup.
+ //Stats returns the in-memory statistics of the client since startup.
Stats(ctx context.Context, in *StatsRequest, opts ...grpc.CallOption) (*StatsResponse, error)
// lncli: `wtclient policy`
- // Policy returns the active watchtower client policy configuration.
+ //Policy returns the active watchtower client policy configuration.
Policy(ctx context.Context, in *PolicyRequest, opts ...grpc.CallOption) (*PolicyResponse, error)
}
@@ -138,37 +138,37 @@ func (c *watchtowerClientClient) Policy(ctx context.Context, in *PolicyRequest,
// for forward compatibility
type WatchtowerClientServer interface {
// lncli: `wtclient add`
- // AddTower adds a new watchtower reachable at the given address and
- // considers it for new sessions. If the watchtower already exists, then
- // any new addresses included will be considered when dialing it for
- // session negotiations and backups.
+ //AddTower adds a new watchtower reachable at the given address and
+ //considers it for new sessions. If the watchtower already exists, then
+ //any new addresses included will be considered when dialing it for
+ //session negotiations and backups.
AddTower(context.Context, *AddTowerRequest) (*AddTowerResponse, error)
// lncli: `wtclient remove`
- // RemoveTower removes a watchtower from being considered for future session
- // negotiations and from being used for any subsequent backups until it's added
- // again. If an address is provided, then this RPC only serves as a way of
- // removing the address from the watchtower instead.
+ //RemoveTower removes a watchtower from being considered for future session
+ //negotiations and from being used for any subsequent backups until it's added
+ //again. If an address is provided, then this RPC only serves as a way of
+ //removing the address from the watchtower instead.
RemoveTower(context.Context, *RemoveTowerRequest) (*RemoveTowerResponse, error)
// lncli: `wtclient deactivate`
- // DeactivateTower sets the given tower's status to inactive so that it
- // is not considered for session negotiation. Its sessions will also not
- // be used while the tower is inactive.
+ //DeactivateTower sets the given tower's status to inactive so that it
+ //is not considered for session negotiation. Its sessions will also not
+ //be used while the tower is inactive.
DeactivateTower(context.Context, *DeactivateTowerRequest) (*DeactivateTowerResponse, error)
// lncli: `wtclient session terminate`
- // Terminate terminates the given session and marks it as terminal so that
- // it is not used for backups anymore.
+ //Terminate terminates the given session and marks it as terminal so that
+ //it is not used for backups anymore.
TerminateSession(context.Context, *TerminateSessionRequest) (*TerminateSessionResponse, error)
// lncli: `wtclient towers`
- // 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)
// lncli: `wtclient tower`
- // GetTowerInfo retrieves information for a registered watchtower.
+ //GetTowerInfo retrieves information for a registered watchtower.
GetTowerInfo(context.Context, *GetTowerInfoRequest) (*Tower, error)
// lncli: `wtclient stats`
- // Stats returns the in-memory statistics of the client since startup.
+ //Stats returns the in-memory statistics of the client since startup.
Stats(context.Context, *StatsRequest) (*StatsResponse, error)
// lncli: `wtclient policy`
- // Policy returns the active watchtower client policy configuration.
+ //Policy returns the active watchtower client policy configuration.
Policy(context.Context, *PolicyRequest) (*PolicyResponse, error)
mustEmbedUnimplementedWatchtowerClientServer()
}
### lntest/harness.go
@@ -781,8 +781,8 @@ func (h *HarnessTest) NewNodeWatchOnly(name string, extraArgs []string,
return hn
}
-// CreateNodeWatchOnly creates a new node and asserts its creation. The function
-// will only create the node and will not start it.
+// CreateNewNode creates a new node and asserts its creation. The function will
+// only create the node and will not start it.
func (h *HarnessTest) CreateNewNode(name string, extraArgs []string,
password []byte, noAuth bool) *node.HarnessNode {
@@ -2370,7 +2370,8 @@ func (h *HarnessTest) SendCoins(a, b *node.HarnessNode,
return tx
}
-// SendCoins sends all coins from node A to node B, returns the sending tx.
+// SendAllCoins sends all coins from node A to node B and returns the sending
+// transaction.
func (h *HarnessTest) SendAllCoins(a, b *node.HarnessNode) *wire.MsgTx {
// Create an address for Bob receive the coins.
req := &lnrpc.NewAddressRequest{
### lntest/harness_assertion.go
@@ -2011,8 +2011,8 @@ func (h *HarnessTest) AssertChannelInGraphCache(hn *node.HarnessNode,
return edge
}
-// AssertChannelInGraphDB asserts that a given channel is found both in the
-// graph db (GetChanInfo) and the graph cache (DescribeGraph).
+// AssertChannelInGraph asserts that a given channel is found both in the graph
+// db (GetChanInfo) and the graph cache (DescribeGraph).
func (h *HarnessTest) AssertChannelInGraph(hn *node.HarnessNode,
chanPoint *lnrpc.ChannelPoint) *lnrpc.ChannelEdge {
@@ -2947,8 +2947,8 @@ func (h *HarnessTest) AssertForceCloseAndAnchorTxnsInMempool() (*wire.MsgTx,
}
}
-// ReceiveSendToRouteUpdate waits until a message is received on the
-// PeerEventsClient stream or the timeout is reached.
+// ReceivePeerEvent waits until a message is received on the PeerEventsClient
+// stream or the timeout is reached.
func (h *HarnessTest) ReceivePeerEvent(
stream rpc.PeerEventsClient) (*lnrpc.PeerEvent, error) {
### lntest/node/config.go
@@ -73,7 +73,7 @@ var (
"--protocol.simple-taproot-chans",
}
- // CfgRbfCoopClose specifies the config used to create a node that
+ // CfgRbfClose specifies the config used to create a node that
// supports the new RBF close protocol.
CfgRbfClose = []string{
"--protocol.rbf-coop-close",
### lnwallet/chancloser/rbf_coop_transitions.go
@@ -25,7 +25,7 @@ import (
)
var (
- // ErrInvalidStateTransition is returned if the remote party tries to
+ // ErrThawHeightNotReached is returned if the remote party tries to
// close, but the thaw height hasn't been matched yet.
ErrThawHeightNotReached = fmt.Errorf("thaw height not reached")
)
### lnwire/query_short_chan_ids_test.go
@@ -206,7 +206,7 @@ func TestQueryShortChanIDsZlibCompatibility(t *testing.T) {
// saturate the same message under the zlib encoding. Runs of
// consecutive SCIDs are the best case for the compressor, so
// this is an upper bound rather than a figure real peers hit.
- maxZlibReplySCIDs = 30_794
+ maxZlibReplySCIDs = 30_792
)
// A reply full of consecutive SCIDs is what we'll size both encodings
### make/builder.Dockerfile
@@ -1,6 +1,6 @@
# If you change this please also update GO_VERSION in Makefile (then run
# `make lint` to see where else it needs to be updated as well).
-FROM golang:1.26.6-bookworm
+FROM golang:1.27.1-bookworm
MAINTAINER Olaoluwa Osuntokun <laolu@lightning.engineering>
### mobile/README.md
@@ -103,7 +103,7 @@ following commands:
```
RUN apt-get install -y wget \
- && wget -c https://dl.google.com/go/go1.26.6.linux-amd64.tar.gz -O - \
+ && wget -c https://dl.google.com/go/go1.27.1.linux-amd64.tar.gz -O - \
| tar -xz -C /usr/local
ENV GOPATH=/go
ENV PATH=$PATH:/usr/local/go/bin:/go/bin
### queue/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/queue
-go 1.25.13
+go 1.26.8
require (
github.com/lightningnetwork/lnd/fn/v2 v2.0.8
### record/blinded_data.go
@@ -93,8 +93,8 @@ func NewNonFinalBlindedRouteData(chanID lnwire.ShortChannelID,
return info
}
-// NewNonFinalBlindedRouteData creates the data that's provided for hops within
-// a blinded route.
+// NewNonFinalBlindedRouteDataOnionMessage creates the data that's provided for
+// hops within a blinded route.
func NewNonFinalBlindedRouteDataOnionMessage(
nextNode fn.Either[*btcec.PublicKey, lnwire.ShortChannelID],
blindingOverride *btcec.PublicKey,
### sqldb/go.mod
@@ -71,4 +71,4 @@ require (
modernc.org/token v1.1.0 // indirect
)
-go 1.25.13
+go 1.26.8
### sqldb/v2/go.mod
@@ -70,4 +70,4 @@ require (
// did not yet make it into the upstream repository.
replace github.com/golang-migrate/migrate/v4 => github.com/lightninglabs/migrate/v4 v4.18.2-9023d66a-fork-pr-2.0.20251211093704-71c1eef09789
-go 1.25.13
+go 1.26.8
### sweep/fee_bumper.go
@@ -474,7 +474,7 @@ func (t *TxPublisher) updateRecord(r *monitorRecord,
return r
}
-// NOTE: part of the `chainio.Consumer` interface.
+// Name returns the name of the transaction publisher consumer.
func (t *TxPublisher) Name() string {
return "TxPublisher"
}
### sweep/sweeper.go
@@ -506,7 +506,7 @@ func (s *UtxoSweeper) Stop() error {
return nil
}
-// NOTE: part of the `chainio.Consumer` interface.
+// Name returns the name of the UTXO sweeper consumer.
func (s *UtxoSweeper) Name() string {
return "UtxoSweeper"
}
### ticker/go.mod
@@ -1,3 +1,3 @@
module github.com/lightningnetwork/lnd/ticker
-go 1.25.13
+go 1.26.8
### tlv/go.mod
@@ -22,4 +22,4 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)
-go 1.25.13
+go 1.26.8
### tools/.custom-gcl.yml
@@ -9,7 +9,7 @@
#
# NOTE: We cannot use untagged versions here. Always update the linter in the
# tools `go.mod` file and here as well.
-version: v2.4.0
+version: v2.13.2
plugins:
- module: 'github.com/lightningnetwork/lnd/tools/linters'
- path: ./linters
\ No newline at end of file
+ path: ./linters
### tools/Dockerfile
@@ -1,4 +1,4 @@
-FROM golang:1.26.6
+FROM golang:1.27.1
RUN apt-get update && apt-get install -y git
ENV GOCACHE=/tmp/build/.cache
### tools/go.mod
@@ -1,39 +1,44 @@
module github.com/lightningnetwork/lnd/tools
-go 1.25.13
+go 1.26.8
require (
- 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect
+ 4d63.com/gocheckcompilerdirectives v1.4.0 // indirect
4d63.com/gochecknoglobals v0.2.2 // indirect
+ charm.land/lipgloss/v2 v2.0.6 // indirect
codeberg.org/chavacava/garif v0.2.0 // indirect
+ codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect
dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect
- dev.gaijin.team/go/golib v0.6.0 // indirect
+ dev.gaijin.team/go/exhaustruct/v5 v5.0.3 // indirect
+ dev.gaijin.team/go/golib v0.8.1 // indirect
github.com/4meepo/tagalign v1.4.3 // indirect
- github.com/Abirdcfly/dupword v0.1.6 // indirect
- github.com/AlwxSin/noinlineerr v1.0.5 // indirect
- github.com/Antonboom/errname v1.1.0 // indirect
- github.com/Antonboom/nilnil v1.1.0 // indirect
- github.com/Antonboom/testifylint v1.6.1 // indirect
- github.com/BurntSushi/toml v1.5.0 // indirect
- github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect
- github.com/Masterminds/semver/v3 v3.3.1 // indirect
+ github.com/Abirdcfly/dupword v0.1.8 // indirect
+ github.com/AdminBenni/iota-mixing v1.0.0 // indirect
+ github.com/AlwxSin/noinlineerr v1.0.6 // indirect
+ github.com/Antonboom/errname v1.1.2 // indirect
+ github.com/Antonboom/nilnil v1.1.2 // indirect
+ github.com/Antonboom/testifylint v1.6.4 // indirect
+ github.com/BurntSushi/toml v1.6.0 // indirect
+ github.com/ClickHouse/clickhouse-go-linter v1.2.1 // indirect
+ github.com/Djarvur/go-err113 v0.1.1 // indirect
+ github.com/Masterminds/semver/v3 v3.5.0 // indirect
+ github.com/MirrexOne/unqueryvet v1.5.4 // indirect
github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect
github.com/aead/siphash v1.0.1 // indirect
- github.com/alecthomas/chroma/v2 v2.20.0 // indirect
+ github.com/alecthomas/chroma/v2 v2.27.0 // indirect
github.com/alecthomas/go-check-sumtype v0.3.1 // indirect
github.com/alexkohler/nakedret/v2 v2.0.6 // indirect
- github.com/alexkohler/prealloc v1.0.0 // indirect
+ github.com/alexkohler/prealloc v1.1.0 // indirect
github.com/alfatraining/structtag v1.0.0 // indirect
github.com/alingse/asasalint v0.0.11 // indirect
github.com/alingse/nilnesserr v0.2.0 // indirect
- github.com/ashanbrown/forbidigo/v2 v2.1.0 // indirect
- github.com/ashanbrown/makezero/v2 v2.0.1 // indirect
- github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
+ github.com/ashanbrown/forbidigo/v2 v2.3.1 // indirect
+ github.com/ashanbrown/makezero/v2 v2.2.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bkielbasa/cyclop v1.2.3 // indirect
github.com/blizzy78/varnamelen v0.8.0 // indirect
github.com/bombsimon/wsl/v4 v4.7.0 // indirect
- github.com/bombsimon/wsl/v5 v5.1.1 // indirect
+ github.com/bombsimon/wsl/v5 v5.9.0 // indirect
github.com/breml/bidichk v0.3.3 // indirect
github.com/breml/errchkjson v0.4.1 // indirect
github.com/btcsuite/btcd v0.26.0 // indirect
@@ -49,194 +54,197 @@ require (
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect
github.com/btcsuite/winsvc v1.0.0 // indirect
- github.com/butuzov/ireturn v0.4.0 // indirect
- github.com/butuzov/mirror v1.3.0 // indirect
- github.com/catenacyber/perfsprint v0.9.1 // indirect
+ github.com/butuzov/ireturn v0.4.1 // indirect
+ github.com/butuzov/mirror v1.3.3 // indirect
+ github.com/catenacyber/perfsprint v0.10.1 // indirect
github.com/ccojocar/zxcvbn-go v1.0.4 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
- github.com/charithe/durationcheck v0.0.10 // indirect
- github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
- github.com/charmbracelet/lipgloss v1.1.0 // indirect
- github.com/charmbracelet/x/ansi v0.8.0 // indirect
- github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
- github.com/charmbracelet/x/term v0.2.1 // indirect
+ github.com/charithe/durationcheck v0.0.11 // indirect
+ github.com/charmbracelet/colorprofile v0.4.3 // indirect
+ github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886 // indirect
+ github.com/charmbracelet/x/ansi v0.11.8 // indirect
+ github.com/charmbracelet/x/term v0.2.2 // indirect
+ github.com/charmbracelet/x/termios v0.1.1 // indirect
+ github.com/charmbracelet/x/windows v0.2.2 // indirect
github.com/ckaznocha/intrange v0.3.1 // indirect
+ github.com/clipperhouse/displaywidth v0.11.0 // indirect
+ github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
github.com/curioswitch/go-reassign v0.3.0 // indirect
github.com/daixiang0/gci v0.13.7 // indirect
github.com/dave/dst v0.27.3 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/decred/dcrd/crypto/blake256 v1.1.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
github.com/decred/dcrd/lru v1.1.3 // indirect
github.com/denis-tingaikin/go-header v0.5.0 // indirect
- github.com/dlclark/regexp2 v1.11.5 // indirect
+ github.com/dlclark/regexp2/v2 v2.2.1 // indirect
github.com/ettle/strcase v0.2.0 // indirect
- github.com/fatih/color v1.18.0 // indirect
+ github.com/fatih/color v1.19.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
- github.com/firefart/nonamedreturns v1.0.6 // indirect
- github.com/fsnotify/fsnotify v1.5.4 // indirect
+ github.com/firefart/nonamedreturns v1.0.8 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fzipp/gocyclo v0.6.0 // indirect
- github.com/ghostiam/protogetter v0.3.15 // indirect
- github.com/go-critic/go-critic v0.13.0 // indirect
+ github.com/ghostiam/protogetter v0.3.21 // indirect
+ github.com/go-critic/go-critic v0.14.4 // indirect
github.com/go-toolsmith/astcast v1.1.0 // indirect
github.com/go-toolsmith/astcopy v1.1.0 // indirect
github.com/go-toolsmith/astequal v1.2.0 // indirect
github.com/go-toolsmith/astfmt v1.1.0 // indirect
github.com/go-toolsmith/astp v1.1.0 // indirect
github.com/go-toolsmith/strparse v1.1.0 // indirect
github.com/go-toolsmith/typep v1.1.0 // indirect
- github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
+ github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect
github.com/gobwas/glob v0.2.3 // indirect
- github.com/gofrs/flock v0.12.1 // indirect
+ github.com/godoc-lint/godoc-lint v0.11.2 // indirect
+ github.com/gofrs/flock v0.13.0 // indirect
github.com/golang/snappy v1.0.0 // indirect
github.com/golangci/asciicheck v0.5.0 // indirect
- github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect
- github.com/golangci/go-printf-func-name v0.1.0 // indirect
- github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect
- github.com/golangci/golangci-lint/v2 v2.4.1-0.20250818164121-838684c5bc0c // indirect
- github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 // indirect
- github.com/golangci/misspell v0.7.0 // indirect
+ github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6 // indirect
+ github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 // indirect
+ github.com/golangci/go-printf-func-name v0.1.1 // indirect
+ github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792 // indirect
+ github.com/golangci/golangci-lint/v2 v2.13.2 // indirect
+ github.com/golangci/golines v0.15.0 // indirect
+ github.com/golangci/misspell v0.8.0 // indirect
github.com/golangci/plugin-module-register v0.1.2 // indirect
github.com/golangci/revgrep v0.8.0 // indirect
+ github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba // indirect
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect
github.com/google/go-cmp v0.7.0 // indirect
- github.com/gordonklaus/ineffassign v0.1.0 // indirect
+ github.com/gordonklaus/ineffassign v0.2.0 // indirect
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
github.com/gostaticanalysis/comment v1.5.0 // indirect
github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect
- github.com/gostaticanalysis/nilerr v0.1.1 // indirect
+ github.com/gostaticanalysis/nilerr v0.1.2 // indirect
github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect
- github.com/hashicorp/go-version v1.7.0 // indirect
+ github.com/hashicorp/go-version v1.9.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jessevdk/go-flags v1.6.1 // indirect
- github.com/jgautheron/goconst v1.8.2 // indirect
- github.com/jingyugao/rowserrcheck v1.1.1 // indirect
+ github.com/jgautheron/goconst v1.11.0 // indirect
github.com/jjti/go-spancheck v0.6.5 // indirect
github.com/jrick/logrotate v1.1.2 // indirect
github.com/julz/importas v0.2.0 // indirect
- github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect
+ github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect
github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee // indirect
- github.com/kisielk/errcheck v1.9.0 // indirect
+ github.com/kisielk/errcheck v1.20.0 // indirect
github.com/kkHAIKE/contextcheck v1.1.6 // indirect
github.com/kkdai/bstream v1.0.0 // indirect
- github.com/kulti/thelper v0.6.3 // indirect
- github.com/kunwardeep/paralleltest v1.0.14 // indirect
- github.com/lasiar/canonicalheader v1.1.2 // indirect
- github.com/ldez/exptostd v0.4.4 // indirect
- github.com/ldez/gomoddirectives v0.7.0 // indirect
- github.com/ldez/grignotin v0.10.0 // indirect
- github.com/ldez/tagliatelle v0.7.1 // indirect
+ github.com/kulti/thelper v0.7.1 // indirect
+ github.com/kunwardeep/paralleltest v1.0.15 // indirect
+ github.com/ldez/exptostd v0.4.5 // indirect
+ github.com/ldez/gomoddirectives v0.9.0 // indirect
+ github.com/ldez/grignotin v0.10.1 // indirect
+ github.com/ldez/structtags v0.6.1 // indirect
+ github.com/ldez/tagliatelle v0.7.2 // indirect
github.com/ldez/usetesting v0.5.0 // indirect
github.com/leonklingele/grouper v1.1.2 // indirect
- github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
+ github.com/lucasb-eyer/go-colorful v1.4.1 // indirect
github.com/macabu/inamedparam v0.2.0 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect
- github.com/manuelarte/funcorder v0.5.0 // indirect
- github.com/maratori/testableexamples v1.0.0 // indirect
- github.com/maratori/testpackage v1.1.1 // indirect
+ github.com/manuelarte/funcorder v0.6.0 // indirect
+ github.com/maratori/testableexamples v1.0.1 // indirect
+ github.com/maratori/testpackage v1.1.2 // indirect
github.com/matoous/godox v1.1.0 // indirect
- github.com/mattn/go-colorable v0.1.14 // indirect
+ github.com/mattn/go-colorable v0.1.15 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/mattn/go-runewidth v0.0.16 // indirect
- github.com/mgechev/revive v1.11.0 // indirect
+ github.com/mattn/go-runewidth v0.0.24 // indirect
+ github.com/mgechev/revive v1.15.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moricho/tparallel v0.3.2 // indirect
- github.com/muesli/termenv v0.16.0 // indirect
+ github.com/muesli/cancelreader v0.2.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nakabonne/nestif v0.3.1 // indirect
github.com/nishanths/exhaustive v0.12.0 // indirect
github.com/nishanths/predeclared v0.2.2 // indirect
- github.com/nunnatsa/ginkgolinter v0.20.0 // indirect
+ github.com/nunnatsa/ginkgolinter v0.24.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/pelletier/go-toml/v2 v2.2.4 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/polyfloyd/go-errorlint v1.8.0 // indirect
+ github.com/pelletier/go-toml/v2 v2.4.3 // indirect
github.com/prometheus/client_golang v1.23.2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.66.1 // indirect
github.com/prometheus/procfs v0.16.1 // indirect
- github.com/quasilyte/go-ruleguard v0.4.4 // indirect
- github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect
+ github.com/quasilyte/go-ruleguard v0.4.5 // indirect
+ github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect
github.com/quasilyte/gogrep v0.5.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect
- github.com/raeperd/recvcheck v0.2.0 // indirect
+ github.com/raeperd/recvcheck v0.3.0 // indirect
github.com/rinchsan/gosimports v0.3.8 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
- github.com/rogpeppe/go-internal v1.14.1 // indirect
+ github.com/rogpeppe/go-internal v1.16.0 // indirect
github.com/ryancurrah/gomodguard v1.4.1 // indirect
- github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect
+ github.com/ryancurrah/gomodguard/v2 v2.1.3 // indirect
+ github.com/ryanrolds/sqlclosecheck v0.6.0 // indirect
github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect
- github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
+ github.com/santhosh-tekuri/jsonschema/v6 v6.0.3 // indirect
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect
- github.com/securego/gosec/v2 v2.22.8 // indirect
- github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/securego/gosec/v2 v2.28.0 // indirect
+ github.com/sirupsen/logrus v1.10.1 // indirect
github.com/sivchari/containedctx v1.0.3 // indirect
- github.com/sonatard/noctx v0.4.0 // indirect
- github.com/sourcegraph/go-diff v0.7.0 // indirect
- github.com/spf13/afero v1.14.0 // indirect
+ github.com/sonatard/noctx v0.5.1 // indirect
+ github.com/sourcegraph/go-diff v0.8.0 // indirect
+ github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.5.0 // indirect
- github.com/spf13/cobra v1.9.1 // indirect
+ github.com/spf13/cobra v1.10.2 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spf13/pflag v1.0.7 // indirect
+ github.com/spf13/pflag v1.0.10 // indirect
github.com/spf13/viper v1.12.0 // indirect
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
- github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect
- github.com/stretchr/objx v0.5.2 // indirect
- github.com/stretchr/testify v1.11.1 // indirect
+ github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect
+ github.com/stretchr/objx v0.5.3 // indirect
+ github.com/stretchr/testify v1.12.1 // indirect
github.com/subosito/gotenv v1.4.1 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
- github.com/tetafro/godot v1.5.1 // indirect
- github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect
+ github.com/tetafro/godot v1.5.6 // indirect
+ github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 // indirect
github.com/timonwong/loggercheck v0.11.0 // indirect
- github.com/tomarrell/wrapcheck/v2 v2.11.0 // indirect
+ github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect
github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect
github.com/ultraware/funlen v0.2.0 // indirect
github.com/ultraware/whitespace v0.2.0 // indirect
- github.com/uudashr/gocognit v1.2.0 // indirect
- github.com/uudashr/iface v1.4.1 // indirect
+ github.com/uudashr/gocognit v1.2.1 // indirect
+ github.com/uudashr/iface v1.5.1 // indirect
github.com/xen0n/gosmopolitan v1.3.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
github.com/yagipy/maintidx v1.0.0 // indirect
github.com/yeya24/promlinter v0.3.0 // indirect
github.com/ykadowak/zerologlint v0.1.5 // indirect
gitlab.com/bosi/decorder v0.4.2 // indirect
go-simpler.org/musttag v0.14.0 // indirect
- go-simpler.org/sloglint v0.11.1 // indirect
- go.augendre.info/arangolint v0.2.0 // indirect
- go.augendre.info/fatcontext v0.8.1 // indirect
- go.uber.org/automaxprocs v1.6.0 // indirect
+ go-simpler.org/sloglint v0.12.0 // indirect
+ go.augendre.info/arangolint v0.4.0 // indirect
+ go.augendre.info/fatcontext v0.10.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
go.uber.org/zap v1.27.0 // indirect
go.yaml.in/yaml/v2 v2.4.2 // indirect
- golang.org/x/crypto v0.41.0 // indirect
- golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect
- golang.org/x/mod v0.27.0 // indirect
- golang.org/x/sync v0.16.0 // indirect
- golang.org/x/sys v0.35.0 // indirect
- golang.org/x/text v0.28.0 // indirect
- golang.org/x/tools v0.36.0 // indirect
- google.golang.org/protobuf v1.36.8 // indirect
+ go.yaml.in/yaml/v3 v3.0.5 // indirect
+ golang.org/x/crypto v0.54.0 // indirect
+ golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f // indirect
+ golang.org/x/mod v0.40.0 // indirect
+ golang.org/x/sync v0.22.0 // indirect
+ golang.org/x/sys v0.47.0 // indirect
+ golang.org/x/text v0.40.0 // indirect
+ golang.org/x/tools v0.49.0 // indirect
+ google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- honnef.co/go/tools v0.6.1 // indirect
- mvdan.cc/gofumpt v0.8.0 // indirect
- mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 // indirect
+ honnef.co/go/tools v0.8.1 // indirect
+ mvdan.cc/gofumpt v0.11.0 // indirect
+ mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8 // indirect
)
tool (
github.com/btcsuite/btcd
- // Once golangci-lint v2.4.1 update it here.
- // Also don't forget to update the .custom-gcl.yml file.
+ // Keep this version in sync with the .custom-gcl.yml file.
github.com/golangci/golangci-lint/v2/cmd/golangci-lint
github.com/rinchsan/gosimports/cmd/gosimports
)
### tools/go.sum
@@ -1,59 +1,69 @@
-4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A=
-4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY=
+4d63.com/gocheckcompilerdirectives v1.4.0 h1:ZLq62rbGWVmQhiZ8kuNVIT/M09xCSTdJz9K3xOdT/CY=
+4d63.com/gocheckcompilerdirectives v1.4.0/go.mod h1:9ZOAiMOjqC/nRwci2fcUXVHUNLG/cH6r6rhUh+jTFtQ=
4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU=
4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0=
+charm.land/lipgloss/v2 v2.0.6 h1:EaGKeuA8FvF+v2BT5VmZd2LoYLaMZJXA5n34th8nCIQ=
+charm.land/lipgloss/v2 v2.0.6/go.mod h1:ipDDJNSGa1hlwDtSfW1s2/xR8Vdhbut4PXh2zEKZd0Q=
codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY=
codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ=
+codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI=
+codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8=
dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y=
dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI=
-dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo=
-dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE=
+dev.gaijin.team/go/exhaustruct/v5 v5.0.3 h1:yOeA7DNjlT8y4yfmN6nWWYYggA13N523YAj9/TXbuTM=
+dev.gaijin.team/go/exhaustruct/v5 v5.0.3/go.mod h1:KwtBsX8nHHH1YxhxkpiBq6bfsmw5WnazWpNvJPHgY9Y=
+dev.gaijin.team/go/golib v0.8.1 h1:JYju4x9BSo+QD/AYeHULVDcvEhiFg8wOi6pT0IaZF5E=
+dev.gaijin.team/go/golib v0.8.1/go.mod h1:c5fu7t1RSGMxSQgcUYO1sODbzsYnOCXJLmHeNG1Eb+0=
github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8=
github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c=
-github.com/Abirdcfly/dupword v0.1.6 h1:qeL6u0442RPRe3mcaLcbaCi2/Y/hOcdtw6DE9odjz9c=
-github.com/Abirdcfly/dupword v0.1.6/go.mod h1:s+BFMuL/I4YSiFv29snqyjwzDp4b65W2Kvy+PKzZ6cw=
-github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY=
-github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc=
-github.com/Antonboom/errname v1.1.0 h1:A+ucvdpMwlo/myWrkHEUEBWc/xuXdud23S8tmTb/oAE=
-github.com/Antonboom/errname v1.1.0/go.mod h1:O1NMrzgUcVBGIfi3xlVuvX8Q/VP/73sseCaAppfjqZw=
-github.com/Antonboom/nilnil v1.1.0 h1:jGxJxjgYS3VUUtOTNk8Z1icwT5ESpLH/426fjmQG+ng=
-github.com/Antonboom/nilnil v1.1.0/go.mod h1:b7sAlogQjFa1wV8jUW3o4PMzDVFLbTux+xnQdvzdcIE=
-github.com/Antonboom/testifylint v1.6.1 h1:6ZSytkFWatT8mwZlmRCHkWz1gPi+q6UBSbieji2Gj/o=
-github.com/Antonboom/testifylint v1.6.1/go.mod h1:k+nEkathI2NFjKO6HvwmSrbzUcQ6FAnbZV+ZRrnXPLI=
-github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
-github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
-github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM=
-github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
-github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4=
-github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
+github.com/Abirdcfly/dupword v0.1.8 h1:SrhcUuGsROBuChFxHALRYzyyPODWn9zwghmzPvD9Cd8=
+github.com/Abirdcfly/dupword v0.1.8/go.mod h1:XZrhVnI7YGpsTiWZANSQaBJ4QpL/Tq5vIEdKJJAs9WI=
+github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo=
+github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY=
+github.com/AlwxSin/noinlineerr v1.0.6 h1:KAvuxunTe9QxvqrFB7nZTdb/7Wzas4AvifslTnG0Ld8=
+github.com/AlwxSin/noinlineerr v1.0.6/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc=
+github.com/Antonboom/errname v1.1.2 h1:dxwONZJua3VB8Xh/VaCjqAcqF645sWWv7xj26zy7tdQ=
+github.com/Antonboom/errname v1.1.2/go.mod h1:YeZIpgLMxT+SNkruGgYkLhzq/9vs3fsolTZegKaKDZI=
+github.com/Antonboom/nilnil v1.1.2 h1:aNlFuJhaEseXe4fHO3xbjXlSeEiQVYa2lEkWD2s2hAY=
+github.com/Antonboom/nilnil v1.1.2/go.mod h1:0ynwvphOLmAuMwTNDyBnDZmSwZoDpcFXmUHmzoHH2WA=
+github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ=
+github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4=
+github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
+github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
+github.com/ClickHouse/clickhouse-go-linter v1.2.1 h1:zGEKIyd5YL08ieWG/LOUmlau2DxbxPVOfAeo+4Jz3ck=
+github.com/ClickHouse/clickhouse-go-linter v1.2.1/go.mod h1:pLorS7ffPTfuUV9M0SJgfHA/h/WQPQUk2FWG9x74cQ4=
+github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g=
+github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k=
+github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE=
+github.com/Masterminds/semver/v3 v3.5.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
+github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ=
+github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU=
github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4=
github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo=
github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
-github.com/alecthomas/chroma/v2 v2.20.0 h1:sfIHpxPyR07/Oylvmcai3X/exDlE8+FA820NTz+9sGw=
-github.com/alecthomas/chroma/v2 v2.20.0/go.mod h1:e7tViK0xh/Nf4BYHl00ycY6rV7b8iXBksI9E359yNmA=
+github.com/alecthomas/chroma/v2 v2.27.0 h1:FodwmyOBgJULFYmDqibcp9pvfDLWdtPRh9v/r5BXYZs=
+github.com/alecthomas/chroma/v2 v2.27.0/go.mod h1:NjJ3ciIgrqBNeIkWZ4e46nseoLDslxU1LmfCoL+wcY8=
github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU=
github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E=
-github.com/alecthomas/repr v0.5.1 h1:E3G4t2QbHTSNpPKBgMTln5KLkZHLOcU7r37J4pXBuIg=
-github.com/alecthomas/repr v0.5.1/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
+github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs=
+github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ=
github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q=
-github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw=
-github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
+github.com/alexkohler/prealloc v1.1.0 h1:cKGRBqlXw5iyQGLYhrXrDlcHxugXpTq4tQ5c91wkf8M=
+github.com/alexkohler/prealloc v1.1.0/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig=
github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc=
github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus=
github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw=
github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I=
github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w=
github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg=
-github.com/ashanbrown/forbidigo/v2 v2.1.0 h1:NAxZrWqNUQiDz19FKScQ/xvwzmij6BiOw3S0+QUQ+Hs=
-github.com/ashanbrown/forbidigo/v2 v2.1.0/go.mod h1:0zZfdNAuZIL7rSComLGthgc/9/n2FqspBOH90xlCHdA=
-github.com/ashanbrown/makezero/v2 v2.0.1 h1:r8GtKetWOgoJ4sLyUx97UTwyt2dO7WkGFHizn/Lo8TY=
-github.com/ashanbrown/makezero/v2 v2.0.1/go.mod h1:kKU4IMxmYW1M4fiEHMb2vc5SFoPzXvgbMR9gIp5pjSw=
-github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
-github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
+github.com/ashanbrown/forbidigo/v2 v2.3.1 h1:KAZijvQ7zeIBKbhikT4jCm0TLYXC4u78bTiLh/8JROI=
+github.com/ashanbrown/forbidigo/v2 v2.3.1/go.mod h1:2QDkLTzU6TV937eFROamXrW92M3paehdae4HCDCOZCM=
+github.com/ashanbrown/makezero/v2 v2.2.1 h1:A7uU8dgB1PA9aelTxHMfHIQ8Qev8AB3JLxJUBUsejqM=
+github.com/ashanbrown/makezero/v2 v2.2.1/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w=
@@ -62,8 +72,8 @@ github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ
github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k=
github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ=
github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg=
-github.com/bombsimon/wsl/v5 v5.1.1 h1:cQg5KJf9FlctAH4cpL9vLKnziYknoCMCdqXl0wjl72Q=
-github.com/bombsimon/wsl/v5 v5.1.1/go.mod h1:Gp8lD04z27wm3FANIUPZycXp+8huVsn0oxc+n4qfV9I=
+github.com/bombsimon/wsl/v5 v5.9.0 h1:WCrgZ7RQnZO5oEwbVTlYgBdU3wL294kR1BSWV8vTfsU=
+github.com/bombsimon/wsl/v5 v5.9.0/go.mod h1:kjo4HiAV5FDkHC8/uzJq9mBffEEd6WT/nvN7DoMovDM=
github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE=
github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE=
github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg=
@@ -94,30 +104,36 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk=
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
-github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E=
-github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70=
-github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc=
-github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI=
-github.com/catenacyber/perfsprint v0.9.1 h1:5LlTp4RwTooQjJCvGEFV6XksZvWE7wCOUvjD2z0vls0=
-github.com/catenacyber/perfsprint v0.9.1/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM=
+github.com/butuzov/ireturn v0.4.1 h1:vWb3NO4t77iku/sjCQ/2pHTQeOmxEhjIriJqRLg1Y+I=
+github.com/butuzov/ireturn v0.4.1/go.mod h1:q+DXKzTDV5guNuXLnIab9fKXizTn2miZHLhxH7V/GB4=
+github.com/butuzov/mirror v1.3.3 h1:v0RsWBhfFc1RQqE/f3sHpSttKDtodFn0gFmtYyD4/hA=
+github.com/butuzov/mirror v1.3.3/go.mod h1:h9BzzwYnTiHO0GzgvaTqIg7VSsOUhdIv51cHFFBmX1w=
+github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ=
+github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc=
github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc=
github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4=
-github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ=
-github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
-github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
-github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
-github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
-github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
-github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
-github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
-github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
-github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
-github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
+github.com/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk=
+github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4=
+github.com/charmbracelet/colorprofile v0.4.3 h1:QPa1IWkYI+AOB+fE+mg/5/4HRMZcaXex9t5KX76i20Q=
+github.com/charmbracelet/colorprofile v0.4.3/go.mod h1:/zT4BhpD5aGFpqQQqw7a+VtHCzu+zrQtt1zhMt9mR4Q=
+github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886 h1:rdnVWKgJpTVXKuKuJyxDJ+NFJdUaUqGvyGy61OcvlbA=
+github.com/charmbracelet/ultraviolet v0.0.0-20260811164956-006e29f97886/go.mod h1:nAw0d9PhFp1qdzi2xhQU5YOu5sVpDIHWlaW2Uz/bCro=
+github.com/charmbracelet/x/ansi v0.11.8 h1:JMFwp0CgDC2+jcOB162HH5k7I3FVbgFSMMYg7dSPBQQ=
+github.com/charmbracelet/x/ansi v0.11.8/go.mod h1:ZNN+3mXny/516oTQPLMPIBeSINvNJJQ8uQXDgbeJxY0=
+github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
+github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
+github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY=
+github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo=
+github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM=
+github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k=
github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs=
github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk=
+github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8=
+github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0=
+github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk=
+github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs=
github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88=
@@ -128,8 +144,9 @@ github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEy
github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo=
github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8=
github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
@@ -138,32 +155,34 @@ github.com/decred/dcrd/lru v1.1.3 h1:w9EAbvGLyzm6jTjF83UKuqZEiUtJmvRhQDOCEIvSuE0
github.com/decred/dcrd/lru v1.1.3/go.mod h1:Tw0i0pJyiLEx/oZdHLe1Wdv/Y7EGzAX+sYftnmxBR4o=
github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8=
github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY=
-github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
-github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8=
+github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2/v2 v2.2.1 h1:mf4KkFUj0gJuarK8P+LgiS+Lit7m9N1yAwEfPbee7R0=
+github.com/dlclark/regexp2/v2 v2.2.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU=
github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q=
github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A=
-github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
-github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
+github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w=
+github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
-github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E=
-github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo=
+github.com/firefart/nonamedreturns v1.0.8 h1:iB32Dl17zJl1zlVEj/WlUWgx0HiRyQ85OUw1WHa4/II=
+github.com/firefart/nonamedreturns v1.0.8/go.mod h1:vxFNvm5AfP/8rgAKFzYmnqx0yp1HjrYsErZ9pHPTznA=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
-github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
+github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
-github.com/ghostiam/protogetter v0.3.15 h1:1KF5sXel0HE48zh1/vn0Loiw25A9ApyseLzQuif1mLY=
-github.com/ghostiam/protogetter v0.3.15/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA=
-github.com/go-critic/go-critic v0.13.0 h1:kJzM7wzltQasSUXtYyTl6UaPVySO6GkaR1thFnJ6afY=
-github.com/go-critic/go-critic v0.13.0/go.mod h1:M/YeuJ3vOCQDnP2SU+ZhjgRzwzcBW87JqLpMJLrZDLI=
+github.com/ghostiam/protogetter v0.3.21 h1:EeWTGvL/Eyosp653hiWb6Byx4b69iJC4/E+za7vQHoI=
+github.com/ghostiam/protogetter v0.3.21/go.mod h1:iAKSpyoHwYzay+OpjoWgwzRtPFthEfuUvmlomTThck0=
+github.com/go-critic/go-critic v0.14.4 h1:dSX4C3pWSeuMVxvQh6yG8U0ReSf3YOmKi4nwX5q7n/8=
+github.com/go-critic/go-critic v0.14.4/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
-github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
+github.com/go-quicktest/qt v1.102.0 h1:HSQxCeh5YZH3EL3W39ixjtyaEhcWSXQHtHnMBzSs474=
+github.com/go-quicktest/qt v1.102.0/go.mod h1:p4lGIVX+8Wa6ZPNDvqcxq36XpUDLh42FLetFU7odllI=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8=
@@ -185,14 +204,16 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi
github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ=
github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus=
github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig=
-github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
-github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
+github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=
+github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY=
github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E=
-github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0=
+github.com/godoc-lint/godoc-lint v0.11.2 h1:Bp0FkJWoSdNsBikdNgIcgtaoo+xz6I/Y9s5WSBQUeeM=
+github.com/godoc-lint/godoc-lint v0.11.2/go.mod h1:iVpGdL1JCikNH2gGeAn3Hh+AgN5Gx/I/cxV+91L41jo=
+github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw=
+github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
@@ -205,49 +226,51 @@ github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0=
github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ=
-github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw=
-github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E=
-github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU=
-github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s=
-github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE=
-github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY=
-github.com/golangci/golangci-lint/v2 v2.4.1-0.20250818164121-838684c5bc0c h1:1RFhewLhOV3AWgBOlLhjozyh+Q+AcYBmb4UOst1m7DI=
-github.com/golangci/golangci-lint/v2 v2.4.1-0.20250818164121-838684c5bc0c/go.mod h1:UrZZ+4nTVngTvsTHDgyQjTKhtTrvGlnVg9V0Q4vC1JM=
-github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95 h1:AkK+w9FZBXlU/xUmBtSJN1+tAI4FIvy5WtnUnY8e4p8=
-github.com/golangci/golines v0.0.0-20250217134842-442fd0091d95/go.mod h1:k9mmcyWKSTMcPPvQUCfRWWQ9VHJ1U9Dc0R7kaXAgtnQ=
-github.com/golangci/misspell v0.7.0 h1:4GOHr/T1lTW0hhR4tgaaV1WS/lJ+ncvYCoFKmqJsj0c=
-github.com/golangci/misspell v0.7.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg=
+github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6 h1:fVLolA3dG6s0brGetsiDAtcnpMSwVa2LqXJEw/9RJG4=
+github.com/golangci/canonicalheader v0.0.0-20260827115959-a25c71c521f6/go.mod h1:1xo+NFW5S+bEf2DKXhaxuzvcDN5AR6o/KMwvqC5Mkpo=
+github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202 h1:CbTB8KpqnViI6lIXxp03Oclc4VFHi3K4BWC1TacsZ+A=
+github.com/golangci/dupl v0.0.0-20260401084720-c99c5cf5c202/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E=
+github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U=
+github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss=
+github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792 h1:WL8YKrt3UbOBqSRU7GpP5BTtQTMWtVtj+mfPijgZeIg=
+github.com/golangci/gofmt v0.0.0-20260820135601-e84e05053792/go.mod h1:te5hX0dW4C5r6YbXs+6ysNr8Q5UTmdIqGbb+mlFiYmA=
+github.com/golangci/golangci-lint/v2 v2.13.2 h1:bCyq3E4vo9qwzifjpzJqYndEt7Ncva80qkk8G2B4TXU=
+github.com/golangci/golangci-lint/v2 v2.13.2/go.mod h1:5xaMd1kAxV7GSBPEyngw8gnnjoRocqW9UVKdBR6627w=
+github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0=
+github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10=
+github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg=
+github.com/golangci/misspell v0.8.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg=
github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg=
github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw=
github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s=
github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k=
+github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba h1:lqtcnSMDuuJdu/LrKWi5RJzpSNLOJXYe/nzQutTI5kg=
+github.com/golangci/rowserrcheck v0.0.0-20260419091836-c5f79b8a11ba/go.mod h1:sCBNcpRmhJCtbFGz49+IM3ETTFf7QdJ30AeYCd43NKk=
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM=
github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s=
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM=
github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
-github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18=
-github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA=
-github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s=
-github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0=
+github.com/google/pprof v0.0.0-20260709232956-b9395ee17fa0 h1:du0WGc8xSKq/++e0cglxhS/mXVqsR7+c7jLEi5Vqduw=
+github.com/google/pprof v0.0.0-20260709232956-b9395ee17fa0/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
+github.com/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs=
+github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw=
github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk=
github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc=
-github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado=
github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM=
github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8=
github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc=
github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk=
github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY=
-github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk=
-github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A=
+github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU=
+github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA=
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8=
github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs=
@@ -256,8 +279,8 @@ github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1T
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
-github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA=
+github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
@@ -269,22 +292,20 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bBK4=
github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc=
-github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4=
-github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako=
-github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs=
-github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c=
+github.com/jgautheron/goconst v1.11.0 h1:KgN90z5qXt5f0Uzf3cWXev3hfMMFUyNeKdpkSBRvLDk=
+github.com/jgautheron/goconst v1.11.0/go.mod h1:0p+wv1lFOiUr0IlNNT1nrm6+8DB8u2sU6KHGzFRXHDc=
github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8=
github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU=
github.com/jrick/logrotate v1.1.2 h1:6ePk462NCX7TfKtNp5JJ7MbA2YIslkpfgP03TlTYMN0=
github.com/jrick/logrotate v1.1.2/go.mod h1:f9tdWggSVK3iqavGpyvegq5IhNois7KXmasU6/N96OQ=
github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ=
github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY=
-github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI=
-github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM=
+github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0=
+github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY=
github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee h1:FPP9HDkBbPyniu+u7FHZg+kKFX1WW0gxOGteJ0h3AJk=
github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee/go.mod h1:N6sz6HwJAenJ6d+/xmSl0ikfV05ZrVGmjt1ryy/WOtE=
-github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M=
-github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8=
+github.com/kisielk/errcheck v1.20.0 h1:9rwHBNKzd4wkDWcROy3DvFGNqEPlkxBg305rvk7HabI=
+github.com/kisielk/errcheck v1.20.0/go.mod h1:O+f80MKNwX8Oor2jwgpeQ9An7uJm+hRSgT+h22knRJU=
github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE=
github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg=
github.com/kkdai/bstream v1.0.0 h1:Se5gHwgp2VT2uHfDrkbbgbgEvV9cimLELwrPJctSjg8=
@@ -293,58 +314,58 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs=
-github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I=
-github.com/kunwardeep/paralleltest v1.0.14 h1:wAkMoMeGX/kGfhQBPODT/BL8XhK23ol/nuQ3SwFaUw8=
-github.com/kunwardeep/paralleltest v1.0.14/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk=
-github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4=
-github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI=
-github.com/ldez/exptostd v0.4.4 h1:58AtQjnLcT/tI5W/1KU7xE/O7zW9RAWB6c/ScQAnfus=
-github.com/ldez/exptostd v0.4.4/go.mod h1:QfdzPw6oHjFVdNV7ILoPu5sw3OZ3OG1JS0I5JN3J4Js=
-github.com/ldez/gomoddirectives v0.7.0 h1:EOx8Dd56BZYSez11LVgdj025lKwlP0/E5OLSl9HDwsY=
-github.com/ldez/gomoddirectives v0.7.0/go.mod h1:wR4v8MN9J8kcwvrkzrx6sC9xe9Cp68gWYCsda5xvyGc=
-github.com/ldez/grignotin v0.10.0 h1:NQPeh1E/Eza4F0exCeC1WkpnLvgUcQDT8MQ1vOLML0E=
-github.com/ldez/grignotin v0.10.0/go.mod h1:oR4iCKUP9fwoeO6vCQeD7M5SMxCT6xdVas4vg0h1LaI=
-github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk=
-github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I=
+github.com/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98=
+github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs=
+github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w=
+github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk=
+github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ=
+github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM=
+github.com/ldez/gomoddirectives v0.9.0 h1:2YV/EX7nVlWL4jySusYTzBKHuE3D2fgcRsQuMa3yIoo=
+github.com/ldez/gomoddirectives v0.9.0/go.mod h1:DdZzfm9MdXCjn2/UGYXCFfo+tzrp2Ib4iD2Q0kIJkwE=
+github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o=
+github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas=
+github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk=
+github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY=
+github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk=
+github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI=
github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc=
github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ=
github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=
github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=
-github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
-github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/lucasb-eyer/go-colorful v1.4.1 h1:1EO+WB73+EH8EVbzlrG3KLAfEypQWVHIBqlTf+2hNss=
+github.com/lucasb-eyer/go-colorful v1.4.1/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE=
github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww=
github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM=
-github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8=
-github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA=
-github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI=
-github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE=
-github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04=
-github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc=
+github.com/manuelarte/funcorder v0.6.0 h1:0hBngc4fa1IgNiI65A7sFGkMvoMCc878RjqB5V7rWP0=
+github.com/manuelarte/funcorder v0.6.0/go.mod h1:id3NDhXdQBmeqXH7eVC6Z89xS6JxvZ8kF9xUxpArU/g=
+github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8=
+github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ=
+github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs=
+github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc=
github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4=
github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs=
github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
-github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
-github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
+github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY=
+github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
-github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mgechev/revive v1.11.0 h1:b/gLLpBE427o+Xmd8G58gSA+KtBwxWinH/A565Awh0w=
-github.com/mgechev/revive v1.11.0/go.mod h1:tI0oLF/2uj+InHCBLrrqfTKfjtFTBCFFfG05auyzgdw=
+github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
+github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
+github.com/mgechev/revive v1.15.0 h1:vJ0HzSBzfNyPbHKolgiFjHxLek9KUijhqh42yGoqZ8Q=
+github.com/mgechev/revive v1.15.0/go.mod h1:LlAKO3QQe9OJ0pVZzI2GPa8CbXGZ/9lNpCGvK4T/a8A=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI=
github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U=
-github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
-github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
+github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
+github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U=
@@ -353,20 +374,20 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK
github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs=
github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk=
github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c=
-github.com/nunnatsa/ginkgolinter v0.20.0 h1:OmWLkAFO2HUTYcU6mprnKud1Ey5pVdiVNYGO5HVicx8=
-github.com/nunnatsa/ginkgolinter v0.20.0/go.mod h1:dCIuFlTPfQerXgGUju3VygfAFPdC5aE1mdacCDKDJcQ=
+github.com/nunnatsa/ginkgolinter v0.24.0 h1:Mp0EagluLFP98JatP6nqp/gGEoljNG97uf9AcxcBVy8=
+github.com/nunnatsa/ginkgolinter v0.24.0/go.mod h1:2ZMRuzX6+3XXyY6UZOwb6n+MCocVGbkIsDBC4vuWz5c=
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
-github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
+github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E=
+github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY=
-github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o=
+github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I=
+github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw=
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
@@ -376,14 +397,9 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
-github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pelletier/go-toml/v2 v2.4.3 h1:GTRvJQutkOSftxIFD5xw9aepkYNuPWmVJpffdDPYVpY=
+github.com/pelletier/go-toml/v2 v2.4.3/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/polyfloyd/go-errorlint v1.8.0 h1:DL4RestQqRLr8U4LygLw8g2DX6RN1eBJOpa2mzsrl1Q=
-github.com/polyfloyd/go-errorlint v1.8.0/go.mod h1:G2W0Q5roxbLCt0ZQbdoxQxXktTjwNyDbEaj3n7jvl4s=
-github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
-github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
@@ -392,79 +408,77 @@ github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9Z
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
-github.com/quasilyte/go-ruleguard v0.4.4 h1:53DncefIeLX3qEpjzlS1lyUmQoUEeOWPFWqaTJq9eAQ=
-github.com/quasilyte/go-ruleguard v0.4.4/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE=
-github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE=
-github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
+github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA=
+github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE=
+github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY=
+github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo=
github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng=
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU=
github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs=
github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ=
-github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI=
-github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU=
+github.com/raeperd/recvcheck v0.3.0 h1:PM+XYvyxIj3bo+kobJfFTdTuU3Lmfu96mKDbyHDbRt8=
+github.com/raeperd/recvcheck v0.3.0/go.mod h1:PZNwG+HztFYMH2ZPq0Hu3QgkV2yiA6VrtNz9c1fXWJo=
github.com/rinchsan/gosimports v0.3.8 h1:X4Pb9yFf6teHvogorT04yK/0W2Df7eHO79biCcYrA4c=
github.com/rinchsan/gosimports v0.3.8/go.mod h1:t0567k69sUHjLvJMPDsV31THZC+8UIbY1oL7NW+0I2c=
-github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
-github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
+github.com/rogpeppe/go-internal v1.16.0 h1:O9DK+vNMDVGLr2BeZqmpLeMjiMNkuXfcqntWbZV6S5g=
+github.com/rogpeppe/go-internal v1.16.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g=
github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I=
-github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU=
-github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ=
+github.com/ryancurrah/gomodguard/v2 v2.1.3 h1:E7sz3PJwE9Ba1reVxSpF6XLCPJZ74Kfw/LabTNM4GIA=
+github.com/ryancurrah/gomodguard/v2 v2.1.3/go.mod h1:CQicdLGatWMxLX53JzoBjYlsNZhHbmLv2AVa0s2aivU=
+github.com/ryanrolds/sqlclosecheck v0.6.0 h1:pEyL9okISdg1F1SEpJNlrEotkTGerv5BMk7U4AG0eVg=
+github.com/ryanrolds/sqlclosecheck v0.6.0/go.mod h1:xyX16hsDaCMXHrMJ3JMzGf5OpDfHTOTTQrT7HOFUmeU=
github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0=
github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4=
-github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
-github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.3 h1:1EYB5IzjZawrrnELUi78f9fPu57HuXjmddZPjrls/28=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.3/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw=
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ=
github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8=
-github.com/securego/gosec/v2 v2.22.8 h1:3NMpmfXO8wAVFZPNsd3EscOTa32Jyo6FLLlW53bexMI=
-github.com/securego/gosec/v2 v2.22.8/go.mod h1:ZAw8K2ikuH9qDlfdV87JmNghnVfKB1XC7+TVzk6Utto=
+github.com/securego/gosec/v2 v2.28.0 h1:ZsSdiDb0AtTpLFVol5z91gbMei9ZiLEPG/pZjZujp7c=
+github.com/securego/gosec/v2 v2.28.0/go.mod h1:lb4/9AHe+lJy/kjWmWRWWsEipvbwGKuxf+tY1Pmjdnk=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
-github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
-github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
-github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/sirupsen/logrus v1.10.1 h1:xi4336Zh11WpU14fXR6I67V3yaTPQYwRx2WEtHbRg4Q=
+github.com/sirupsen/logrus v1.10.1/go.mod h1:vsQHnG7xzNsxk3NrwboUiWPnIC3dmbjcGPykD7+tiHk=
github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE=
github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4=
-github.com/sonatard/noctx v0.4.0 h1:7MC/5Gg4SQ4lhLYR6mvOP6mQVSxCrdyiExo7atBs27o=
-github.com/sonatard/noctx v0.4.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas=
-github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0=
-github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
-github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
-github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
+github.com/sonatard/noctx v0.5.1 h1:wklWg9c9ZYugOAk7qG4yP4PBrlQsmSLPTvW1K4PRQMs=
+github.com/sonatard/noctx v0.5.1/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas=
+github.com/sourcegraph/go-diff v0.8.0 h1:ipIyu4cTsLbIrln4l0qtHA3r0a7gyK4ntKjtQytHhvY=
+github.com/sourcegraph/go-diff v0.8.0/go.mod h1:hWlcO7Al+UZStZAP8rBumHpCK5ZHQ5BXsMls8p4+F5E=
+github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
+github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
-github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
-github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
+github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
-github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
+github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ=
github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI=
github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0=
github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=
-github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4=
-github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk=
+github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g=
+github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
-github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4=
+github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
-github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
+github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE=
+github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg=
github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
@@ -473,24 +487,24 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
-github.com/tetafro/godot v1.5.1 h1:PZnjCol4+FqaEzvZg5+O8IY2P3hfY9JzRBNPv1pEDS4=
-github.com/tetafro/godot v1.5.1/go.mod h1:cCdPtEndkmqqrhiCfkmxDodMQJ/f3L1BCNskCUZdTwk=
-github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk=
-github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460=
+github.com/tetafro/godot v1.5.6 h1:IEkrFCwXaYHlOn4mGzGS3F3dkP6m9t0jpwqBFPIkKiA=
+github.com/tetafro/godot v1.5.6/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU=
+github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 h1:SiHe5XLTn9sFWJ5pBwJ5FN/4j34q9ZlOAD//kMoMYp0=
+github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4/go.mod h1:sDHLK7rb/59v/ZxZ7KtymgcoxuUMxjXq8gtu9VMOK8M=
github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M=
github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8=
-github.com/tomarrell/wrapcheck/v2 v2.11.0 h1:BJSt36snX9+4WTIXeJ7nvHBQBcm1h2SjQMSlmQ6aFSU=
-github.com/tomarrell/wrapcheck/v2 v2.11.0/go.mod h1:wFL9pDWDAbXhhPZZt+nG8Fu+h29TtnZ2MW6Lx4BRXIU=
+github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is=
+github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo=
github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw=
github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI=
github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA=
github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g=
github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8=
-github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA=
-github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU=
-github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU=
-github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg=
+github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4=
+github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q=
+github.com/uudashr/iface v1.5.1 h1:BS3yrgaT55s3dAtJoxuTnsZNbsejq/mVuzp49YDyfBA=
+github.com/uudashr/iface v1.5.1/go.mod h1:5UWoT6SvTdTww/KToRj6clO+n4Kg3/NrAQvgOB+5Ggw=
github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM=
github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
@@ -504,7 +518,6 @@ github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2
github.com/yuin/goldmark v1.1.25/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.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo=
@@ -513,14 +526,12 @@ go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ=
go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28=
go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo=
go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE=
-go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s=
-go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ=
-go.augendre.info/arangolint v0.2.0 h1:2NP/XudpPmfBhQKX4rMk+zDYIj//qbt4hfZmSSTcpj8=
-go.augendre.info/arangolint v0.2.0/go.mod h1:Vx4KSJwu48tkE+8uxuf0cbBnAPgnt8O1KWiT7bljq7w=
-go.augendre.info/fatcontext v0.8.1 h1:/T4+cCjpL9g71gJpcFAgVo/K5VFpqlN+NPU7QXxD5+A=
-go.augendre.info/fatcontext v0.8.1/go.mod h1:r3Qz4ZOzex66wfyyj5VZ1xUcl81vzvHQ6/GWzzlMEwA=
-go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
-go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
+go-simpler.org/sloglint v0.12.0 h1:UzWDlLWNE5FLqsvyq3tWYHuQMbqrervOhT8qPl4Mmw4=
+go-simpler.org/sloglint v0.12.0/go.mod h1:jBjjC2bm8rYrs88oTRlFX497kWjJsyZWYoNaXkGRI6I=
+go.augendre.info/arangolint v0.4.0 h1:xSCZjRoS93nXazBSg5d0OGCi9APPLNMmmLrC995tR50=
+go.augendre.info/arangolint v0.4.0/go.mod h1:l+f/b4plABuFISuKnTGD4RioXiCCgghv2xqst/xOvAA=
+go.augendre.info/fatcontext v0.10.0 h1:HhFopmivh8U1+AU7f0kuwUeg2eiIns7YsGQOMHwSJ90=
+go.augendre.info/fatcontext v0.10.0/go.mod h1:pqpGvA9GlrXy+aXkp8L2dKz12Zp4g2FhzcAtwToU+2w=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
@@ -529,31 +540,29 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
+go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
+go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
-golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
-golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
-golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
-golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
-golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
+golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw=
+golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk=
+golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
+golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
-golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b h1:KdrhdYPDUvJTvrDK9gdjfFd6JTk8vA1WJoldYSi0kHo=
-golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ=
+golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f h1:+lI8cDJ4uceLipg2f1ODay7fEuLkk0BIHXd6PB8icxo=
+golang.org/x/exp/typeparams v0.0.0-20260811152304-ee035b5b010f/go.mod h1:PqrXSW65cXDZH0k4IeUbhmg/bcAZDbzNz3byBpKCsXo=
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.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
-golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
+golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
+golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -563,15 +572,11 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
-golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
-golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
-golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
+golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
+golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -580,10 +585,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
-golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
+golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -596,57 +599,38 @@ golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/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-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
-golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
+golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
-golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
-golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
+golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
+golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
-golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
-golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
-golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
-golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
+golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI=
+golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo=
golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
@@ -661,8 +645,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
-google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -676,14 +660,13 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI=
-honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4=
-mvdan.cc/gofumpt v0.8.0 h1:nZUCeC2ViFaerTcYKstMmfysj6uhQrA2vJe+2vwGU6k=
-mvdan.cc/gofumpt v0.8.0/go.mod h1:vEYnSzyGPmjvFkqJWtXkh79UwPWP9/HMxQdGEXZHjpg=
-mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP8367OuBV5jvo+4Ulppyf8=
-mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE=
+honnef.co/go/tools v0.8.1 h1:+JKf3xJ1ni4CwrhVg4/pqsfPGP6vNAXcKbMXJodYx3w=
+honnef.co/go/tools v0.8.1/go.mod h1:XA+OnlRA9EDh/ukGvXMNSZNKGwFQJ+5dER0ioUkOxks=
+mvdan.cc/gofumpt v0.11.0 h1:0H01XB95PnN2QgCSR9ELdZyTlJqNZ7181B0BTMh5VZc=
+mvdan.cc/gofumpt v0.11.0/go.mod h1:BeT5wCsOJt6J9zT2MZIOGszjUHzFkn1/l9g6xAzqsXo=
+mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8 h1:Re1NRyLpiAt9kB+ImaaoapwWiQXrKwER4tY8fLOkDew=
+mvdan.cc/unparam v0.0.0-20260823230713-2fa3d841b0c8/go.mod h1:MrS/+zJ1M2xvGXhKktiHbNQeQPyg3Qel+KkzT+f7/i4=
pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk=
pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
### tools/linters/go.mod
@@ -1,6 +1,6 @@
module github.com/lightningnetwork/lnd/tools/linters
-go 1.25.13
+go 1.26.8
require (
github.com/golangci/plugin-module-register v0.1.1
### tor/go.mod
@@ -25,4 +25,4 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)
-go 1.25.13
+go 1.26.8
### zpay32/decode.go
@@ -32,8 +32,8 @@ var (
// not valid UTF-8.
ErrInvalidUTF8Description = errors.New("description is not valid UTF-8")
- // ErrLengthNotMultipleOfHopHintLength is returned if the length of the
- // route hint data is not a multiple of the hop hint length.
+ // ErrLengthNotMultipleOfHopHint is returned if the length of the route
+ // hint data is not a multiple of the hop hint length.
ErrLengthNotMultipleOfHopHint = errors.New("length is not a multiple " +
"of hop hint length")
Why this scored 29/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.