From 0800386138039f41bd304830ab6cbe970f077f3e Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Wed, 6 May 2020 16:41:47 +0200 Subject: [PATCH] lnrpc: unify proto style by moving services to top of file --- lnrpc/chainrpc/chainnotifier.proto | 74 +++++------ lnrpc/routerrpc/router.proto | 164 ++++++++++++------------ lnrpc/signrpc/signer.proto | 116 ++++++++--------- lnrpc/verrpc/verrpc.proto | 12 +- lnrpc/walletrpc/walletkit.proto | 185 +++++++++++++-------------- lnrpc/watchtowerrpc/watchtower.proto | 2 + lnrpc/wtclientrpc/wtclient.proto | 62 ++++----- 7 files changed, 315 insertions(+), 300 deletions(-) diff --git a/lnrpc/chainrpc/chainnotifier.proto b/lnrpc/chainrpc/chainnotifier.proto index 5cc8a0da2..e8fa03779 100644 --- a/lnrpc/chainrpc/chainnotifier.proto +++ b/lnrpc/chainrpc/chainnotifier.proto @@ -2,6 +2,44 @@ syntax = "proto3"; 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 { /* The transaction hash for which we should request a confirmation notification @@ -140,39 +178,3 @@ message BlockEpoch { // The height of the block. 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); -} diff --git a/lnrpc/routerrpc/router.proto b/lnrpc/routerrpc/router.proto index 673ffb986..d460c7328 100644 --- a/lnrpc/routerrpc/router.proto +++ b/lnrpc/routerrpc/router.proto @@ -6,6 +6,88 @@ package 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 { /// The identity pubkey of the payment recipient bytes dest = 1; @@ -438,7 +520,7 @@ enum PaymentState { There are more routes to try, but the payment timeout was exceeded. */ FAILED_TIMEOUT = 2; - + /** All possible routes were tried and failed permanently. Or were no routes to the destination at all. @@ -478,83 +560,3 @@ message PaymentStatus { */ 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; - } -} diff --git a/lnrpc/signrpc/signer.proto b/lnrpc/signrpc/signer.proto index 346018a95..14bb9e460 100644 --- a/lnrpc/signrpc/signer.proto +++ b/lnrpc/signrpc/signer.proto @@ -4,6 +4,65 @@ package 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 { /// The family of key being identified. int32 key_family = 1; @@ -167,60 +226,3 @@ message SharedKeyResponse { // The shared public key, hashed with sha256. 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); -} diff --git a/lnrpc/verrpc/verrpc.proto b/lnrpc/verrpc/verrpc.proto index 1ec3a2411..39f910ed0 100644 --- a/lnrpc/verrpc/verrpc.proto +++ b/lnrpc/verrpc/verrpc.proto @@ -4,12 +4,18 @@ package 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 { + /* lncli: `version` + GetVersion returns the current version and build information of the running + daemon. + */ rpc GetVersion (VersionRequest) returns (Version); -}; +} message VersionRequest { -}; +} message Version { /// A verbose description of the daemon's commit. @@ -38,4 +44,4 @@ message Version { /// The version of go that compiled the executable. string go_version = 9; -}; +} diff --git a/lnrpc/walletrpc/walletkit.proto b/lnrpc/walletrpc/walletkit.proto index 3911f0649..209571ca3 100644 --- a/lnrpc/walletrpc/walletkit.proto +++ b/lnrpc/walletrpc/walletkit.proto @@ -7,6 +7,98 @@ package 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 { /** Is the key finger print of the root pubkey that this request is targeting. @@ -244,7 +336,6 @@ message BumpFeeRequest { message BumpFeeResponse { } - message ListSweepsRequest { /* Retrieve the full sweep transaction details. If false, only the sweep txids @@ -268,95 +359,3 @@ message ListSweepsResponse { 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) {} -} - diff --git a/lnrpc/watchtowerrpc/watchtower.proto b/lnrpc/watchtowerrpc/watchtower.proto index 818807ef2..b928c9836 100644 --- a/lnrpc/watchtowerrpc/watchtower.proto +++ b/lnrpc/watchtowerrpc/watchtower.proto @@ -4,6 +4,8 @@ package 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 { /** lncli: tower info GetInfo returns general information concerning the companion watchtower diff --git a/lnrpc/wtclientrpc/wtclient.proto b/lnrpc/wtclientrpc/wtclient.proto index d264d4b17..f7304b3ca 100644 --- a/lnrpc/wtclientrpc/wtclient.proto +++ b/lnrpc/wtclientrpc/wtclient.proto @@ -4,6 +4,38 @@ package 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 { // The identifying public key of the watchtower to add. bytes pubkey = 1; @@ -133,33 +165,3 @@ message PolicyResponse { */ 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); -}