From 2d7fda2a41e59623977656c95bd9757d05fe5e55 Mon Sep 17 00:00:00 2001 From: bitromortac Date: Thu, 24 Nov 2022 16:17:04 +0100 Subject: [PATCH] routerrpc: mark `QueryProbability` deprecated We deprecate `QueryProbability`, as it displays the same information as `QueryMissionControl` less the probability. `QueryRoutes` still contains the total probability of a route. --- cmd/lncli/cmd_mission_control.go | 3 +- docs/release-notes/release-notes-0.16.0.md | 7 +++- lnrpc/routerrpc/router.proto | 4 +- lnrpc/routerrpc/router.swagger.json | 2 +- lnrpc/routerrpc/router_grpc.pb.go | 8 ++-- lnrpc/routerrpc/router_server.go | 41 -------------------- lnrpc/routerrpc/router_server_deprecated.go | 43 +++++++++++++++++++++ 7 files changed, 57 insertions(+), 51 deletions(-) diff --git a/cmd/lncli/cmd_mission_control.go b/cmd/lncli/cmd_mission_control.go index e26481b23..9d8b5533b 100644 --- a/cmd/lncli/cmd_mission_control.go +++ b/cmd/lncli/cmd_mission_control.go @@ -163,9 +163,10 @@ func queryMissionControl(ctx *cli.Context) error { var queryProbCommand = cli.Command{ Name: "queryprob", Category: "Mission Control", - Usage: "Estimate a success probability.", + Usage: "Deprecated. Estimate a success probability.", ArgsUsage: "from-node to-node amt", Action: actionDecorator(queryProb), + Hidden: true, } func queryProb(ctx *cli.Context) error { diff --git a/docs/release-notes/release-notes-0.16.0.md b/docs/release-notes/release-notes-0.16.0.md index 03caefc3f..c8b40de5a 100644 --- a/docs/release-notes/release-notes-0.16.0.md +++ b/docs/release-notes/release-notes-0.16.0.md @@ -77,6 +77,9 @@ GetBlock, GetBestBlock, GetBlockHash. These endpoints provide access to chain block data. +* [`QueryProbabiltiy` is deprecated. Internal mission control state can be + obtained via `QueryMissionControl`.]( + https://github.com/lightningnetwork/lnd/pull/6857) ## Wallet @@ -262,8 +265,8 @@ certain large transactions](https://github.com/lightningnetwork/lnd/pull/7100). ## Pathfinding -* [Pathfinding takes capacity of edges into account to better estimate the - success probability.](https://github.com/lightningnetwork/lnd/pull/6857) +* [Pathfinding takes capacity of edges into account to improve success + probability estimation.](https://github.com/lightningnetwork/lnd/pull/6857) ### Tooling and documentation diff --git a/lnrpc/routerrpc/router.proto b/lnrpc/routerrpc/router.proto index 4cfd4f37f..cf0de130b 100644 --- a/lnrpc/routerrpc/router.proto +++ b/lnrpc/routerrpc/router.proto @@ -94,8 +94,8 @@ service Router { returns (SetMissionControlConfigResponse); /* - QueryProbability returns the current success probability estimate for a - given node pair and amount. + Deprecated. QueryProbability returns the current success probability + estimate for a given node pair and amount. */ rpc QueryProbability (QueryProbabilityRequest) returns (QueryProbabilityResponse); diff --git a/lnrpc/routerrpc/router.swagger.json b/lnrpc/routerrpc/router.swagger.json index 7cd634a87..1503f2a15 100644 --- a/lnrpc/routerrpc/router.swagger.json +++ b/lnrpc/routerrpc/router.swagger.json @@ -116,7 +116,7 @@ }, "/v2/router/mc/probability/{from_node}/{to_node}/{amt_msat}": { "get": { - "summary": "QueryProbability returns the current success probability estimate for a\ngiven node pair and amount.", + "summary": "Deprecated. QueryProbability returns the current success probability\nestimate for a given node pair and amount.", "operationId": "Router_QueryProbability", "responses": { "200": { diff --git a/lnrpc/routerrpc/router_grpc.pb.go b/lnrpc/routerrpc/router_grpc.pb.go index c16198cb7..9a65770a3 100644 --- a/lnrpc/routerrpc/router_grpc.pb.go +++ b/lnrpc/routerrpc/router_grpc.pb.go @@ -65,8 +65,8 @@ type RouterClient interface { // SetMissionControlConfig will set mission control's config, if the config // provided is valid. SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error) - // QueryProbability returns the current success probability estimate for a - // given node pair and amount. + // Deprecated. QueryProbability returns the current success probability + // estimate for a given node pair and amount. QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error) // 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 @@ -483,8 +483,8 @@ type RouterServer interface { // SetMissionControlConfig will set mission control's config, if the config // provided is valid. SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error) - // QueryProbability returns the current success probability estimate for a - // given node pair and amount. + // Deprecated. QueryProbability returns the current success probability + // estimate for a given node pair and amount. QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error) // 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 diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go index 3966ca406..44335b84b 100644 --- a/lnrpc/routerrpc/router_server.go +++ b/lnrpc/routerrpc/router_server.go @@ -692,47 +692,6 @@ func getMsatPairValue(msatValue lnwire.MilliSatoshi, satValue) } -// QueryProbability returns the current success probability estimate for a -// given node pair and amount. -func (s *Server) QueryProbability(ctx context.Context, - req *QueryProbabilityRequest) (*QueryProbabilityResponse, error) { - - fromNode, err := route.NewVertexFromBytes(req.FromNode) - if err != nil { - return nil, err - } - - toNode, err := route.NewVertexFromBytes(req.ToNode) - if err != nil { - return nil, err - } - - amt := lnwire.MilliSatoshi(req.AmtMsat) - - // Compute the probability. - var prob float64 - mc := s.cfg.RouterBackend.MissionControl - capacity, err := s.cfg.RouterBackend.FetchAmountPairCapacity( - fromNode, toNode, amt, - ) - - // If we cannot query the capacity this means that either we don't have - // information available or that the channel fails min/maxHtlc - // constraints, so we return a zero probability. - if err != nil { - log.Errorf("Cannot fetch capacity: %v", err) - } else { - prob = mc.GetProbability(fromNode, toNode, amt, capacity) - } - - history := mc.GetPairHistorySnapshot(fromNode, toNode) - - return &QueryProbabilityResponse{ - Probability: prob, - History: toRPCPairData(&history), - }, nil -} - // TrackPaymentV2 returns a stream of payment state updates. The stream is // closed when the payment completes. func (s *Server) TrackPaymentV2(request *TrackPaymentRequest, diff --git a/lnrpc/routerrpc/router_server_deprecated.go b/lnrpc/routerrpc/router_server_deprecated.go index f23ebb190..0918c1e64 100644 --- a/lnrpc/routerrpc/router_server_deprecated.go +++ b/lnrpc/routerrpc/router_server_deprecated.go @@ -7,6 +7,8 @@ import ( "fmt" "github.com/lightningnetwork/lnd/lnrpc" + "github.com/lightningnetwork/lnd/lnwire" + "github.com/lightningnetwork/lnd/routing/route" ) // legacyTrackPaymentServer is a wrapper struct that transforms a stream of main @@ -118,3 +120,44 @@ func (s *Server) SendToRoute(ctx context.Context, return legacyResp, err } + +// QueryProbability returns the current success probability estimate for a +// given node pair and amount. +func (s *Server) QueryProbability(ctx context.Context, + req *QueryProbabilityRequest) (*QueryProbabilityResponse, error) { + + fromNode, err := route.NewVertexFromBytes(req.FromNode) + if err != nil { + return nil, err + } + + toNode, err := route.NewVertexFromBytes(req.ToNode) + if err != nil { + return nil, err + } + + amt := lnwire.MilliSatoshi(req.AmtMsat) + + // Compute the probability. + var prob float64 + mc := s.cfg.RouterBackend.MissionControl + capacity, err := s.cfg.RouterBackend.FetchAmountPairCapacity( + fromNode, toNode, amt, + ) + + // If we cannot query the capacity this means that either we don't have + // information available or that the channel fails min/maxHtlc + // constraints, so we return a zero probability. + if err != nil { + log.Errorf("Cannot fetch capacity: %v", err) + } else { + prob = mc.GetProbability(fromNode, toNode, amt, capacity) + } + + history := mc.GetPairHistorySnapshot(fromNode, toNode) + + return &QueryProbabilityResponse{ + Probability: prob, + History: toRPCPairData(&history), + }, nil +}