2019-09-27 12:43:12 +03:00
|
|
|
// +build routerrpc
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
"github.com/btcsuite/btcutil"
|
|
|
|
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
|
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
|
|
"github.com/lightningnetwork/lnd/routing/route"
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
)
|
|
|
|
|
|
|
|
var queryProbCommand = cli.Command{
|
|
|
|
Name: "queryprob",
|
|
|
|
Category: "Payments",
|
|
|
|
Usage: "Estimate a success probability.",
|
|
|
|
ArgsUsage: "from-node to-node amt",
|
|
|
|
Action: actionDecorator(queryProb),
|
|
|
|
}
|
|
|
|
|
|
|
|
func queryProb(ctx *cli.Context) error {
|
|
|
|
args := ctx.Args()
|
|
|
|
|
|
|
|
if len(args) != 3 {
|
|
|
|
return cli.ShowCommandHelp(ctx, "queryprob")
|
|
|
|
}
|
|
|
|
|
|
|
|
fromNode, err := route.NewVertexFromStr(args.Get(0))
|
|
|
|
if err != nil {
|
|
|
|
return fmt.Errorf("invalid from node key: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
toNode, err := route.NewVertexFromStr(args.Get(1))
|
|
|
|
if err != nil {
|
|
|
|
return fmt.Errorf("invalid to node key: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
amtSat, err := strconv.ParseUint(args.Get(2), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return fmt.Errorf("invalid amt: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
amtMsat := lnwire.NewMSatFromSatoshis(
|
|
|
|
btcutil.Amount(amtSat),
|
|
|
|
)
|
|
|
|
|
|
|
|
conn := getClientConn(ctx, false)
|
|
|
|
defer conn.Close()
|
|
|
|
|
|
|
|
client := routerrpc.NewRouterClient(conn)
|
|
|
|
|
|
|
|
req := &routerrpc.QueryProbabilityRequest{
|
|
|
|
FromNode: fromNode[:],
|
|
|
|
ToNode: toNode[:],
|
|
|
|
AmtMsat: int64(amtMsat),
|
|
|
|
}
|
|
|
|
rpcCtx := context.Background()
|
|
|
|
response, err := client.QueryProbability(rpcCtx, req)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2020-02-11 16:11:48 +03:00
|
|
|
printRespJSON(response)
|
2019-09-27 12:43:12 +03:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|