lnrpc: unify proto style by moving services to top of file
This commit is contained in:
parent
acd105fccb
commit
0800386138
@ -2,6 +2,44 @@ syntax = "proto3";
|
|||||||
|
|
||||||
package chainrpc;
|
package chainrpc;
|
||||||
|
|
||||||
|
// ChainNotifier is a service that can be used to get information about the
|
||||||
|
// chain backend by registering notifiers for chain events.
|
||||||
|
service ChainNotifier {
|
||||||
|
/*
|
||||||
|
RegisterConfirmationsNtfn is a synchronous response-streaming RPC that
|
||||||
|
registers an intent for a client to be notified once a confirmation request
|
||||||
|
has reached its required number of confirmations on-chain.
|
||||||
|
|
||||||
|
A client can specify whether the confirmation request should be for a
|
||||||
|
particular transaction by its hash or for an output script by specifying a
|
||||||
|
zero hash.
|
||||||
|
*/
|
||||||
|
rpc RegisterConfirmationsNtfn (ConfRequest) returns (stream ConfEvent);
|
||||||
|
|
||||||
|
/*
|
||||||
|
RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
|
||||||
|
intent for a client to be notification once a spend request has been spent
|
||||||
|
by a transaction that has confirmed on-chain.
|
||||||
|
|
||||||
|
A client can specify whether the spend request should be for a particular
|
||||||
|
outpoint or for an output script by specifying a zero outpoint.
|
||||||
|
*/
|
||||||
|
rpc RegisterSpendNtfn (SpendRequest) returns (stream SpendEvent);
|
||||||
|
|
||||||
|
/*
|
||||||
|
RegisterBlockEpochNtfn is a synchronous response-streaming RPC that
|
||||||
|
registers an intent for a client to be notified of blocks in the chain. The
|
||||||
|
stream will return a hash and height tuple of a block for each new/stale
|
||||||
|
block in the chain. It is the client's responsibility to determine whether
|
||||||
|
the tuple returned is for a new or stale block in the chain.
|
||||||
|
|
||||||
|
A client can also request a historical backlog of blocks from a particular
|
||||||
|
point. This allows clients to be idempotent by ensuring that they do not
|
||||||
|
missing processing a single block within the chain.
|
||||||
|
*/
|
||||||
|
rpc RegisterBlockEpochNtfn (BlockEpoch) returns (stream BlockEpoch);
|
||||||
|
}
|
||||||
|
|
||||||
message ConfRequest {
|
message ConfRequest {
|
||||||
/*
|
/*
|
||||||
The transaction hash for which we should request a confirmation notification
|
The transaction hash for which we should request a confirmation notification
|
||||||
@ -140,39 +178,3 @@ message BlockEpoch {
|
|||||||
// The height of the block.
|
// The height of the block.
|
||||||
uint32 height = 2;
|
uint32 height = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
service ChainNotifier {
|
|
||||||
/*
|
|
||||||
RegisterConfirmationsNtfn is a synchronous response-streaming RPC that
|
|
||||||
registers an intent for a client to be notified once a confirmation request
|
|
||||||
has reached its required number of confirmations on-chain.
|
|
||||||
|
|
||||||
A client can specify whether the confirmation request should be for a
|
|
||||||
particular transaction by its hash or for an output script by specifying a
|
|
||||||
zero hash.
|
|
||||||
*/
|
|
||||||
rpc RegisterConfirmationsNtfn (ConfRequest) returns (stream ConfEvent);
|
|
||||||
|
|
||||||
/*
|
|
||||||
RegisterSpendNtfn is a synchronous response-streaming RPC that registers an
|
|
||||||
intent for a client to be notification once a spend request has been spent
|
|
||||||
by a transaction that has confirmed on-chain.
|
|
||||||
|
|
||||||
A client can specify whether the spend request should be for a particular
|
|
||||||
outpoint or for an output script by specifying a zero outpoint.
|
|
||||||
*/
|
|
||||||
rpc RegisterSpendNtfn (SpendRequest) returns (stream SpendEvent);
|
|
||||||
|
|
||||||
/*
|
|
||||||
RegisterBlockEpochNtfn is a synchronous response-streaming RPC that
|
|
||||||
registers an intent for a client to be notified of blocks in the chain. The
|
|
||||||
stream will return a hash and height tuple of a block for each new/stale
|
|
||||||
block in the chain. It is the client's responsibility to determine whether
|
|
||||||
the tuple returned is for a new or stale block in the chain.
|
|
||||||
|
|
||||||
A client can also request a historical backlog of blocks from a particular
|
|
||||||
point. This allows clients to be idempotent by ensuring that they do not
|
|
||||||
missing processing a single block within the chain.
|
|
||||||
*/
|
|
||||||
rpc RegisterBlockEpochNtfn (BlockEpoch) returns (stream BlockEpoch);
|
|
||||||
}
|
|
||||||
|
@ -6,6 +6,88 @@ package routerrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/routerrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/routerrpc";
|
||||||
|
|
||||||
|
// Router is a service that offers advanced interaction with the router
|
||||||
|
// subsystem of the daemon.
|
||||||
|
service Router {
|
||||||
|
/**
|
||||||
|
SendPaymentV2 attempts to route a payment described by the passed
|
||||||
|
PaymentRequest to the final destination. The call returns a stream of
|
||||||
|
payment updates.
|
||||||
|
*/
|
||||||
|
rpc SendPaymentV2 (SendPaymentRequest) returns (stream lnrpc.Payment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
TrackPaymentV2 returns an update stream for the payment identified by the
|
||||||
|
payment hash.
|
||||||
|
*/
|
||||||
|
rpc TrackPaymentV2 (TrackPaymentRequest) returns (stream lnrpc.Payment);
|
||||||
|
|
||||||
|
/**
|
||||||
|
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
||||||
|
may cost to send an HTLC to the target end destination.
|
||||||
|
*/
|
||||||
|
rpc EstimateRouteFee (RouteFeeRequest) returns (RouteFeeResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
SendToRoute attempts to make a payment via the specified route. This method
|
||||||
|
differs from SendPayment in that it allows users to specify a full route
|
||||||
|
manually. This can be used for things like rebalancing, and atomic swaps.
|
||||||
|
*/
|
||||||
|
rpc SendToRoute (SendToRouteRequest) returns (SendToRouteResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
ResetMissionControl clears all mission control state and starts with a clean
|
||||||
|
slate.
|
||||||
|
*/
|
||||||
|
rpc ResetMissionControl (ResetMissionControlRequest)
|
||||||
|
returns (ResetMissionControlResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
QueryMissionControl exposes the internal mission control state to callers.
|
||||||
|
It is a development feature.
|
||||||
|
*/
|
||||||
|
rpc QueryMissionControl (QueryMissionControlRequest)
|
||||||
|
returns (QueryMissionControlResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
QueryProbability returns the current success probability estimate for a
|
||||||
|
given node pair and amount.
|
||||||
|
*/
|
||||||
|
rpc QueryProbability (QueryProbabilityRequest)
|
||||||
|
returns (QueryProbabilityResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
BuildRoute builds a fully specified route based on a list of hop public
|
||||||
|
keys. It retrieves the relevant channel policies from the graph in order to
|
||||||
|
calculate the correct fees and time locks.
|
||||||
|
*/
|
||||||
|
rpc BuildRoute (BuildRouteRequest) returns (BuildRouteResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
||||||
|
the client which delivers a stream of htlc events.
|
||||||
|
*/
|
||||||
|
rpc SubscribeHtlcEvents (SubscribeHtlcEventsRequest)
|
||||||
|
returns (stream HtlcEvent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
||||||
|
described by the passed PaymentRequest to the final destination. The call
|
||||||
|
returns a stream of payment status updates.
|
||||||
|
*/
|
||||||
|
rpc SendPayment (SendPaymentRequest) returns (stream PaymentStatus) {
|
||||||
|
option deprecated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
||||||
|
the payment identified by the payment hash.
|
||||||
|
*/
|
||||||
|
rpc TrackPayment (TrackPaymentRequest) returns (stream PaymentStatus) {
|
||||||
|
option deprecated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message SendPaymentRequest {
|
message SendPaymentRequest {
|
||||||
/// The identity pubkey of the payment recipient
|
/// The identity pubkey of the payment recipient
|
||||||
bytes dest = 1;
|
bytes dest = 1;
|
||||||
@ -478,83 +560,3 @@ message PaymentStatus {
|
|||||||
*/
|
*/
|
||||||
repeated lnrpc.HTLCAttempt htlcs = 4;
|
repeated lnrpc.HTLCAttempt htlcs = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
service Router {
|
|
||||||
/**
|
|
||||||
SendPaymentV2 attempts to route a payment described by the passed
|
|
||||||
PaymentRequest to the final destination. The call returns a stream of
|
|
||||||
payment updates.
|
|
||||||
*/
|
|
||||||
rpc SendPaymentV2 (SendPaymentRequest) returns (stream lnrpc.Payment);
|
|
||||||
|
|
||||||
/**
|
|
||||||
TrackPaymentV2 returns an update stream for the payment identified by the
|
|
||||||
payment hash.
|
|
||||||
*/
|
|
||||||
rpc TrackPaymentV2 (TrackPaymentRequest) returns (stream lnrpc.Payment);
|
|
||||||
|
|
||||||
/**
|
|
||||||
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
|
||||||
may cost to send an HTLC to the target end destination.
|
|
||||||
*/
|
|
||||||
rpc EstimateRouteFee (RouteFeeRequest) returns (RouteFeeResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
SendToRoute attempts to make a payment via the specified route. This method
|
|
||||||
differs from SendPayment in that it allows users to specify a full route
|
|
||||||
manually. This can be used for things like rebalancing, and atomic swaps.
|
|
||||||
*/
|
|
||||||
rpc SendToRoute (SendToRouteRequest) returns (SendToRouteResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
ResetMissionControl clears all mission control state and starts with a clean
|
|
||||||
slate.
|
|
||||||
*/
|
|
||||||
rpc ResetMissionControl (ResetMissionControlRequest)
|
|
||||||
returns (ResetMissionControlResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
QueryMissionControl exposes the internal mission control state to callers.
|
|
||||||
It is a development feature.
|
|
||||||
*/
|
|
||||||
rpc QueryMissionControl (QueryMissionControlRequest)
|
|
||||||
returns (QueryMissionControlResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
QueryProbability returns the current success probability estimate for a
|
|
||||||
given node pair and amount.
|
|
||||||
*/
|
|
||||||
rpc QueryProbability (QueryProbabilityRequest)
|
|
||||||
returns (QueryProbabilityResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
BuildRoute builds a fully specified route based on a list of hop public
|
|
||||||
keys. It retrieves the relevant channel policies from the graph in order to
|
|
||||||
calculate the correct fees and time locks.
|
|
||||||
*/
|
|
||||||
rpc BuildRoute (BuildRouteRequest) returns (BuildRouteResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
|
||||||
the client which delivers a stream of htlc events.
|
|
||||||
*/
|
|
||||||
rpc SubscribeHtlcEvents (SubscribeHtlcEventsRequest)
|
|
||||||
returns (stream HtlcEvent);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
|
||||||
described by the passed PaymentRequest to the final destination. The call
|
|
||||||
returns a stream of payment status updates.
|
|
||||||
*/
|
|
||||||
rpc SendPayment(SendPaymentRequest) returns (stream PaymentStatus) {
|
|
||||||
option deprecated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
|
||||||
the payment identified by the payment hash.
|
|
||||||
*/
|
|
||||||
rpc TrackPayment(TrackPaymentRequest) returns (stream PaymentStatus) {
|
|
||||||
option deprecated = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -4,6 +4,65 @@ package signrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/signrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/signrpc";
|
||||||
|
|
||||||
|
// Signer is a service that gives access to the signing functionality of the
|
||||||
|
// daemon's wallet.
|
||||||
|
service Signer {
|
||||||
|
/**
|
||||||
|
SignOutputRaw is a method that can be used to generated a signature for a
|
||||||
|
set of inputs/outputs to a transaction. Each request specifies details
|
||||||
|
concerning how the outputs should be signed, which keys they should be
|
||||||
|
signed with, and also any optional tweaks. The return value is a fixed
|
||||||
|
64-byte signature (the same format as we use on the wire in Lightning).
|
||||||
|
|
||||||
|
If we are unable to sign using the specified keys, then an error will be
|
||||||
|
returned.
|
||||||
|
*/
|
||||||
|
rpc SignOutputRaw (SignReq) returns (SignResp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
ComputeInputScript generates a complete InputIndex for the passed
|
||||||
|
transaction with the signature as defined within the passed SignDescriptor.
|
||||||
|
This method should be capable of generating the proper input script for
|
||||||
|
both regular p2wkh output and p2wkh outputs nested within a regular p2sh
|
||||||
|
output.
|
||||||
|
|
||||||
|
Note that when using this method to sign inputs belonging to the wallet,
|
||||||
|
the only items of the SignDescriptor that need to be populated are pkScript
|
||||||
|
in the TxOut field, the value in that same field, and finally the input
|
||||||
|
index.
|
||||||
|
*/
|
||||||
|
rpc ComputeInputScript (SignReq) returns (InputScriptResp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
SignMessage signs a message with the key specified in the key locator. The
|
||||||
|
returned signature is fixed-size LN wire format encoded.
|
||||||
|
|
||||||
|
The main difference to SignMessage in the main RPC is that a specific key is
|
||||||
|
used to sign the message instead of the node identity private key.
|
||||||
|
*/
|
||||||
|
rpc SignMessage (SignMessageReq) returns (SignMessageResp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
VerifyMessage verifies a signature over a message using the public key
|
||||||
|
provided. The signature must be fixed-size LN wire format encoded.
|
||||||
|
|
||||||
|
The main difference to VerifyMessage in the main RPC is that the public key
|
||||||
|
used to sign the message does not have to be a node known to the network.
|
||||||
|
*/
|
||||||
|
rpc VerifyMessage (VerifyMessageReq) returns (VerifyMessageResp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
|
||||||
|
derivation between the ephemeral public key in the request and the node's
|
||||||
|
key specified in the key_loc parameter (or the node's identity private key
|
||||||
|
if no key locator is specified):
|
||||||
|
P_shared = privKeyNode * ephemeralPubkey
|
||||||
|
The resulting shared public key is serialized in the compressed format and
|
||||||
|
hashed with sha256, resulting in the final key length of 256bit.
|
||||||
|
*/
|
||||||
|
rpc DeriveSharedKey (SharedKeyRequest) returns (SharedKeyResponse);
|
||||||
|
}
|
||||||
|
|
||||||
message KeyLocator {
|
message KeyLocator {
|
||||||
/// The family of key being identified.
|
/// The family of key being identified.
|
||||||
int32 key_family = 1;
|
int32 key_family = 1;
|
||||||
@ -167,60 +226,3 @@ message SharedKeyResponse {
|
|||||||
// The shared public key, hashed with sha256.
|
// The shared public key, hashed with sha256.
|
||||||
bytes shared_key = 1;
|
bytes shared_key = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
service Signer {
|
|
||||||
/**
|
|
||||||
SignOutputRaw is a method that can be used to generated a signature for a
|
|
||||||
set of inputs/outputs to a transaction. Each request specifies details
|
|
||||||
concerning how the outputs should be signed, which keys they should be
|
|
||||||
signed with, and also any optional tweaks. The return value is a fixed
|
|
||||||
64-byte signature (the same format as we use on the wire in Lightning).
|
|
||||||
|
|
||||||
If we are unable to sign using the specified keys, then an error will be
|
|
||||||
returned.
|
|
||||||
*/
|
|
||||||
rpc SignOutputRaw (SignReq) returns (SignResp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
ComputeInputScript generates a complete InputIndex for the passed
|
|
||||||
transaction with the signature as defined within the passed SignDescriptor.
|
|
||||||
This method should be capable of generating the proper input script for
|
|
||||||
both regular p2wkh output and p2wkh outputs nested within a regular p2sh
|
|
||||||
output.
|
|
||||||
|
|
||||||
Note that when using this method to sign inputs belonging to the wallet,
|
|
||||||
the only items of the SignDescriptor that need to be populated are pkScript
|
|
||||||
in the TxOut field, the value in that same field, and finally the input
|
|
||||||
index.
|
|
||||||
*/
|
|
||||||
rpc ComputeInputScript (SignReq) returns (InputScriptResp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
SignMessage signs a message with the key specified in the key locator. The
|
|
||||||
returned signature is fixed-size LN wire format encoded.
|
|
||||||
|
|
||||||
The main difference to SignMessage in the main RPC is that a specific key is
|
|
||||||
used to sign the message instead of the node identity private key.
|
|
||||||
*/
|
|
||||||
rpc SignMessage (SignMessageReq) returns (SignMessageResp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
VerifyMessage verifies a signature over a message using the public key
|
|
||||||
provided. The signature must be fixed-size LN wire format encoded.
|
|
||||||
|
|
||||||
The main difference to VerifyMessage in the main RPC is that the public key
|
|
||||||
used to sign the message does not have to be a node known to the network.
|
|
||||||
*/
|
|
||||||
rpc VerifyMessage (VerifyMessageReq) returns (VerifyMessageResp);
|
|
||||||
|
|
||||||
/*
|
|
||||||
DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key
|
|
||||||
derivation between the ephemeral public key in the request and the node's
|
|
||||||
key specified in the key_loc parameter (or the node's identity private key
|
|
||||||
if no key locator is specified):
|
|
||||||
P_shared = privKeyNode * ephemeralPubkey
|
|
||||||
The resulting shared public key is serialized in the compressed format and
|
|
||||||
hashed with sha256, resulting in the final key length of 256bit.
|
|
||||||
*/
|
|
||||||
rpc DeriveSharedKey (SharedKeyRequest) returns (SharedKeyResponse);
|
|
||||||
}
|
|
||||||
|
@ -4,12 +4,18 @@ package verrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/verrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/verrpc";
|
||||||
|
|
||||||
|
// Versioner is a service that can be used to get information about the version
|
||||||
|
// and build information of the running daemon.
|
||||||
service Versioner {
|
service Versioner {
|
||||||
|
/* lncli: `version`
|
||||||
|
GetVersion returns the current version and build information of the running
|
||||||
|
daemon.
|
||||||
|
*/
|
||||||
rpc GetVersion (VersionRequest) returns (Version);
|
rpc GetVersion (VersionRequest) returns (Version);
|
||||||
};
|
}
|
||||||
|
|
||||||
message VersionRequest {
|
message VersionRequest {
|
||||||
};
|
}
|
||||||
|
|
||||||
message Version {
|
message Version {
|
||||||
/// A verbose description of the daemon's commit.
|
/// A verbose description of the daemon's commit.
|
||||||
@ -38,4 +44,4 @@ message Version {
|
|||||||
|
|
||||||
/// The version of go that compiled the executable.
|
/// The version of go that compiled the executable.
|
||||||
string go_version = 9;
|
string go_version = 9;
|
||||||
};
|
}
|
||||||
|
@ -7,6 +7,98 @@ package walletrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/walletrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/walletrpc";
|
||||||
|
|
||||||
|
// WalletKit is a service that gives access to the core functionalities of the
|
||||||
|
// daemon's wallet.
|
||||||
|
service WalletKit {
|
||||||
|
/**
|
||||||
|
DeriveNextKey attempts to derive the *next* key within the key family
|
||||||
|
(account in BIP43) specified. This method should return the next external
|
||||||
|
child within this branch.
|
||||||
|
*/
|
||||||
|
rpc DeriveNextKey (KeyReq) returns (signrpc.KeyDescriptor);
|
||||||
|
|
||||||
|
/**
|
||||||
|
DeriveKey attempts to derive an arbitrary key specified by the passed
|
||||||
|
KeyLocator.
|
||||||
|
*/
|
||||||
|
rpc DeriveKey (signrpc.KeyLocator) returns (signrpc.KeyDescriptor);
|
||||||
|
|
||||||
|
/**
|
||||||
|
NextAddr returns the next unused address within the wallet.
|
||||||
|
*/
|
||||||
|
rpc NextAddr (AddrRequest) returns (AddrResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
PublishTransaction attempts to publish the passed transaction to the
|
||||||
|
network. Once this returns without an error, the wallet will continually
|
||||||
|
attempt to re-broadcast the transaction on start up, until it enters the
|
||||||
|
chain.
|
||||||
|
*/
|
||||||
|
rpc PublishTransaction (Transaction) returns (PublishResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
SendOutputs is similar to the existing sendmany call in Bitcoind, and
|
||||||
|
allows the caller to create a transaction that sends to several outputs at
|
||||||
|
once. This is ideal when wanting to batch create a set of transactions.
|
||||||
|
*/
|
||||||
|
rpc SendOutputs (SendOutputsRequest) returns (SendOutputsResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
EstimateFee attempts to query the internal fee estimator of the wallet to
|
||||||
|
determine the fee (in sat/kw) to attach to a transaction in order to
|
||||||
|
achieve the confirmation target.
|
||||||
|
*/
|
||||||
|
rpc EstimateFee (EstimateFeeRequest) returns (EstimateFeeResponse);
|
||||||
|
|
||||||
|
/*
|
||||||
|
PendingSweeps returns lists of on-chain outputs that lnd is currently
|
||||||
|
attempting to sweep within its central batching engine. Outputs with similar
|
||||||
|
fee rates are batched together in order to sweep them within a single
|
||||||
|
transaction.
|
||||||
|
|
||||||
|
NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
|
||||||
|
remain supported. This is an advanced API that depends on the internals of
|
||||||
|
the UtxoSweeper, so things may change.
|
||||||
|
*/
|
||||||
|
rpc PendingSweeps (PendingSweepsRequest) returns (PendingSweepsResponse);
|
||||||
|
|
||||||
|
/*
|
||||||
|
BumpFee bumps the fee of an arbitrary input within a transaction. This RPC
|
||||||
|
takes a different approach than bitcoind's bumpfee command. lnd has a
|
||||||
|
central batching engine in which inputs with similar fee rates are batched
|
||||||
|
together to save on transaction fees. Due to this, we cannot rely on
|
||||||
|
bumping the fee on a specific transaction, since transactions can change at
|
||||||
|
any point with the addition of new inputs. The list of inputs that
|
||||||
|
currently exist within lnd's central batching engine can be retrieved
|
||||||
|
through the PendingSweeps RPC.
|
||||||
|
|
||||||
|
When bumping the fee of an input that currently exists within lnd's central
|
||||||
|
batching engine, a higher fee transaction will be created that replaces the
|
||||||
|
lower fee transaction through the Replace-By-Fee (RBF) policy. If it
|
||||||
|
|
||||||
|
This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
|
||||||
|
(CPFP), where the child transaction pays for its parent's fee. This can be
|
||||||
|
done by specifying an outpoint within the low fee transaction that is under
|
||||||
|
the control of the wallet.
|
||||||
|
|
||||||
|
The fee preference can be expressed either as a specific fee rate or a delta
|
||||||
|
of blocks in which the output should be swept on-chain within. If a fee
|
||||||
|
preference is not explicitly specified, then an error is returned.
|
||||||
|
|
||||||
|
Note that this RPC currently doesn't perform any validation checks on the
|
||||||
|
fee preference being provided. For now, the responsibility of ensuring that
|
||||||
|
the new fee preference is sufficient is delegated to the user.
|
||||||
|
*/
|
||||||
|
rpc BumpFee (BumpFeeRequest) returns (BumpFeeResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
ListSweeps returns a list of the sweep transactions our node has produced.
|
||||||
|
Note that these sweeps may not be confirmed yet, as we record sweeps on
|
||||||
|
broadcast, not confirmation.
|
||||||
|
*/
|
||||||
|
rpc ListSweeps (ListSweepsRequest) returns (ListSweepsResponse);
|
||||||
|
}
|
||||||
|
|
||||||
message KeyReq {
|
message KeyReq {
|
||||||
/**
|
/**
|
||||||
Is the key finger print of the root pubkey that this request is targeting.
|
Is the key finger print of the root pubkey that this request is targeting.
|
||||||
@ -244,7 +336,6 @@ message BumpFeeRequest {
|
|||||||
message BumpFeeResponse {
|
message BumpFeeResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
message ListSweepsRequest {
|
message ListSweepsRequest {
|
||||||
/*
|
/*
|
||||||
Retrieve the full sweep transaction details. If false, only the sweep txids
|
Retrieve the full sweep transaction details. If false, only the sweep txids
|
||||||
@ -268,95 +359,3 @@ message ListSweepsResponse {
|
|||||||
TransactionIDs transaction_ids = 2;
|
TransactionIDs transaction_ids = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
service WalletKit {
|
|
||||||
/**
|
|
||||||
DeriveNextKey attempts to derive the *next* key within the key family
|
|
||||||
(account in BIP43) specified. This method should return the next external
|
|
||||||
child within this branch.
|
|
||||||
*/
|
|
||||||
rpc DeriveNextKey (KeyReq) returns (signrpc.KeyDescriptor);
|
|
||||||
|
|
||||||
/**
|
|
||||||
DeriveKey attempts to derive an arbitrary key specified by the passed
|
|
||||||
KeyLocator.
|
|
||||||
*/
|
|
||||||
rpc DeriveKey (signrpc.KeyLocator) returns (signrpc.KeyDescriptor);
|
|
||||||
|
|
||||||
/**
|
|
||||||
NextAddr returns the next unused address within the wallet.
|
|
||||||
*/
|
|
||||||
rpc NextAddr (AddrRequest) returns (AddrResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
PublishTransaction attempts to publish the passed transaction to the
|
|
||||||
network. Once this returns without an error, the wallet will continually
|
|
||||||
attempt to re-broadcast the transaction on start up, until it enters the
|
|
||||||
chain.
|
|
||||||
*/
|
|
||||||
rpc PublishTransaction (Transaction) returns (PublishResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
SendOutputs is similar to the existing sendmany call in Bitcoind, and
|
|
||||||
allows the caller to create a transaction that sends to several outputs at
|
|
||||||
once. This is ideal when wanting to batch create a set of transactions.
|
|
||||||
*/
|
|
||||||
rpc SendOutputs (SendOutputsRequest) returns (SendOutputsResponse);
|
|
||||||
|
|
||||||
/**
|
|
||||||
EstimateFee attempts to query the internal fee estimator of the wallet to
|
|
||||||
determine the fee (in sat/kw) to attach to a transaction in order to
|
|
||||||
achieve the confirmation target.
|
|
||||||
*/
|
|
||||||
rpc EstimateFee (EstimateFeeRequest) returns (EstimateFeeResponse);
|
|
||||||
|
|
||||||
/*
|
|
||||||
PendingSweeps returns lists of on-chain outputs that lnd is currently
|
|
||||||
attempting to sweep within its central batching engine. Outputs with similar
|
|
||||||
fee rates are batched together in order to sweep them within a single
|
|
||||||
transaction.
|
|
||||||
|
|
||||||
NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to
|
|
||||||
remain supported. This is an advanced API that depends on the internals of
|
|
||||||
the UtxoSweeper, so things may change.
|
|
||||||
*/
|
|
||||||
rpc PendingSweeps (PendingSweepsRequest) returns (PendingSweepsResponse);
|
|
||||||
|
|
||||||
/*
|
|
||||||
BumpFee bumps the fee of an arbitrary input within a transaction. This RPC
|
|
||||||
takes a different approach than bitcoind's bumpfee command. lnd has a
|
|
||||||
central batching engine in which inputs with similar fee rates are batched
|
|
||||||
together to save on transaction fees. Due to this, we cannot rely on
|
|
||||||
bumping the fee on a specific transaction, since transactions can change at
|
|
||||||
any point with the addition of new inputs. The list of inputs that
|
|
||||||
currently exist within lnd's central batching engine can be retrieved
|
|
||||||
through the PendingSweeps RPC.
|
|
||||||
|
|
||||||
When bumping the fee of an input that currently exists within lnd's central
|
|
||||||
batching engine, a higher fee transaction will be created that replaces the
|
|
||||||
lower fee transaction through the Replace-By-Fee (RBF) policy. If it
|
|
||||||
|
|
||||||
This RPC also serves useful when wanting to perform a Child-Pays-For-Parent
|
|
||||||
(CPFP), where the child transaction pays for its parent's fee. This can be
|
|
||||||
done by specifying an outpoint within the low fee transaction that is under
|
|
||||||
the control of the wallet.
|
|
||||||
|
|
||||||
The fee preference can be expressed either as a specific fee rate or a delta
|
|
||||||
of blocks in which the output should be swept on-chain within. If a fee
|
|
||||||
preference is not explicitly specified, then an error is returned.
|
|
||||||
|
|
||||||
Note that this RPC currently doesn't perform any validation checks on the
|
|
||||||
fee preference being provided. For now, the responsibility of ensuring that
|
|
||||||
the new fee preference is sufficient is delegated to the user.
|
|
||||||
*/
|
|
||||||
rpc BumpFee (BumpFeeRequest) returns (BumpFeeResponse);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
ListSweeps returns a list of the sweep transactions our node has produced.
|
|
||||||
Note that these sweeps may not be confirmed yet, as we record sweeps on
|
|
||||||
broadcast, not confirmation.
|
|
||||||
*/
|
|
||||||
rpc ListSweeps (ListSweepsRequest) returns (ListSweepsResponse) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ package watchtowerrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc";
|
||||||
|
|
||||||
|
// Watchtower is a service that grants access to the watchtower server
|
||||||
|
// functionality of the daemon.
|
||||||
service Watchtower {
|
service Watchtower {
|
||||||
/** lncli: tower info
|
/** lncli: tower info
|
||||||
GetInfo returns general information concerning the companion watchtower
|
GetInfo returns general information concerning the companion watchtower
|
||||||
|
@ -4,6 +4,38 @@ package wtclientrpc;
|
|||||||
|
|
||||||
option go_package = "github.com/lightningnetwork/lnd/lnrpc/wtclientrpc";
|
option go_package = "github.com/lightningnetwork/lnd/lnrpc/wtclientrpc";
|
||||||
|
|
||||||
|
// WatchtowerClient is a service that grants access to the watchtower client
|
||||||
|
// functionality of the daemon.
|
||||||
|
service WatchtowerClient {
|
||||||
|
/*
|
||||||
|
AddTower adds a new watchtower reachable at the given address and
|
||||||
|
considers it for new sessions. If the watchtower already exists, then
|
||||||
|
any new addresses included will be considered when dialing it for
|
||||||
|
session negotiations and backups.
|
||||||
|
*/
|
||||||
|
rpc AddTower (AddTowerRequest) returns (AddTowerResponse);
|
||||||
|
|
||||||
|
/*
|
||||||
|
RemoveTower removes a watchtower from being considered for future session
|
||||||
|
negotiations and from being used for any subsequent backups until it's added
|
||||||
|
again. If an address is provided, then this RPC only serves as a way of
|
||||||
|
removing the address from the watchtower instead.
|
||||||
|
*/
|
||||||
|
rpc RemoveTower (RemoveTowerRequest) returns (RemoveTowerResponse);
|
||||||
|
|
||||||
|
// ListTowers returns the list of watchtowers registered with the client.
|
||||||
|
rpc ListTowers (ListTowersRequest) returns (ListTowersResponse);
|
||||||
|
|
||||||
|
// GetTowerInfo retrieves information for a registered watchtower.
|
||||||
|
rpc GetTowerInfo (GetTowerInfoRequest) returns (Tower);
|
||||||
|
|
||||||
|
// Stats returns the in-memory statistics of the client since startup.
|
||||||
|
rpc Stats (StatsRequest) returns (StatsResponse);
|
||||||
|
|
||||||
|
// Policy returns the active watchtower client policy configuration.
|
||||||
|
rpc Policy (PolicyRequest) returns (PolicyResponse);
|
||||||
|
}
|
||||||
|
|
||||||
message AddTowerRequest {
|
message AddTowerRequest {
|
||||||
// The identifying public key of the watchtower to add.
|
// The identifying public key of the watchtower to add.
|
||||||
bytes pubkey = 1;
|
bytes pubkey = 1;
|
||||||
@ -133,33 +165,3 @@ message PolicyResponse {
|
|||||||
*/
|
*/
|
||||||
uint32 sweep_sat_per_byte = 2;
|
uint32 sweep_sat_per_byte = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
service WatchtowerClient {
|
|
||||||
/*
|
|
||||||
AddTower adds a new watchtower reachable at the given address and
|
|
||||||
considers it for new sessions. If the watchtower already exists, then
|
|
||||||
any new addresses included will be considered when dialing it for
|
|
||||||
session negotiations and backups.
|
|
||||||
*/
|
|
||||||
rpc AddTower (AddTowerRequest) returns (AddTowerResponse);
|
|
||||||
|
|
||||||
/*
|
|
||||||
RemoveTower removes a watchtower from being considered for future session
|
|
||||||
negotiations and from being used for any subsequent backups until it's added
|
|
||||||
again. If an address is provided, then this RPC only serves as a way of
|
|
||||||
removing the address from the watchtower instead.
|
|
||||||
*/
|
|
||||||
rpc RemoveTower (RemoveTowerRequest) returns (RemoveTowerResponse);
|
|
||||||
|
|
||||||
// ListTowers returns the list of watchtowers registered with the client.
|
|
||||||
rpc ListTowers (ListTowersRequest) returns (ListTowersResponse);
|
|
||||||
|
|
||||||
// GetTowerInfo retrieves information for a registered watchtower.
|
|
||||||
rpc GetTowerInfo (GetTowerInfoRequest) returns (Tower);
|
|
||||||
|
|
||||||
// Stats returns the in-memory statistics of the client since startup.
|
|
||||||
rpc Stats (StatsRequest) returns (StatsResponse);
|
|
||||||
|
|
||||||
// Policy returns the active watchtower client policy configuration.
|
|
||||||
rpc Policy (PolicyRequest) returns (PolicyResponse);
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user