351 Commits
Author SHA1 Message Date
Joost Jager 299821152a routing+routerrpc: add BuildRoute function 2019-09-24 10:00:44 +02:00
Joost Jager f60e4b1e14 lnwire+htlcswitch: report height for invalid payment details failure
Extends the invalid payment details failure with the new accept height
field. This allows sender to distinguish between a genuine invalid
details situation and a delay caused by intermediate nodes.
2019-09-16 10:10:20 +02:00
Joost Jager 3d7de2ad39 multi: remove dead code 2019-09-10 17:21:59 +02:00
Joost Jager 99a920f2a3 routerrpc: report route success probability
The intention of adding this field is to make probability based path
finding more transparent and help understand why a route is returned.
2019-09-05 08:35:04 +02:00
Olaoluwa Osuntokun ebb3e987b1 lnrpc/routerrpc: complete JSON naming for mc responses 2019-08-23 16:36:35 -07:00
Joost Jager ff0c5a0d5e routing: process successes in mission control
This commit modifies paymentLifecycle so that it not only feeds
failures into mission control, but successes as well.
This allows for more accurate probability estimates. Previously,
the success probability for a successful pair and a pair with
no history was equal. There was no force that pushed towards
previously successful routes.
2019-08-23 09:15:41 +02:00
Olaoluwa Osuntokun 763cb6c09d lnrpc+lnrpc/routerrpc: add a new TLV record field to the Hop proto
In this commit, we add a new field to the Hop proto to allow callers to
be able to specify TLV records for the SendToRoute call, and also to be
able to display TLV records that were used during regular path finding.

We also update SendPayment to support dest TLV records.
2019-08-22 18:53:03 -07:00
Joost Jager f1769c8c8c routing: convert to node pair based
Previously mission control tracked failures on a per node, per channel basis.
This commit changes this to tracking on the level of directed node pairs. The goal
of moving to this coarser-grained level is to reduce the number of required
payment attempts without compromising payment reliability.
2019-08-13 19:21:37 +02:00
Joost Jager 6ee2c04190 lnrpc/routerrpc: use vertex constructor 2019-08-13 18:45:10 +02:00
Joost Jager 5c52efc0eb lnrpc/routerrpc: fix line wrap 2019-08-13 18:45:04 +02:00
Joost Jager aabd68ebcd multi: rename FailUnknownPaymentHash to FailIncorrectDetails
Align naming better with the lightning spec. Not the full name of the
failure (FailIncorrectOrUnknownPaymentDetails) is used, because this
would cause too many long lines in the code.
2019-08-08 11:04:17 +02:00
Joost Jager 7e7b620355 routing: persist mission control data 2019-07-31 08:44:00 +02:00
Joost Jager 3dc83d1b6b routerrpc: embed routing config 2019-07-29 13:42:59 +02:00
Joost Jager fc337cd34f routing+routerrpc+lnrpc: add option to use mc in queryroutes
A boolean flag is added to the QueryRoutes rpc that allows feeding
mission control probabilities into path finding.
2019-07-18 15:49:29 +02:00
Joost Jager 7f4c42847c lnrpc/routerrpc: create mission control interface 2019-07-18 15:49:27 +02:00
Joost Jager 34b264a3d8 routing: create PathFindingConfig for global parameters 2019-07-18 15:49:25 +02:00
Joost Jager 37e2751695 routing+routerrpc: isolate payment session source from mission control 2019-07-13 22:38:19 +02:00
Joost Jager 2726f50d7c htlcswitch: do not consider unknown failures an error 2019-07-11 19:49:49 +02:00
Joost Jager 418fe364de htlcswitch: use distinct error for unreadable failures 2019-07-11 19:49:45 +02:00
Joost Jager 2b47632b26 htlcswitch+routing+routerrpc: return error source as index 2019-07-11 10:37:26 +02:00
Olaoluwa Osuntokun ba5fbb3c27 Merge pull request #3156 from joostjager/extended-fail
routerrpc: add more failure reasons and route hints
2019-07-08 19:12:03 -07:00
Joost Jager 1e79ddc9bc routerrpc: accept route hints for SendPayment rpc 2019-07-04 09:27:18 +02:00
Joost Jager 5ce04091d8 routing+routerrpc+channeldb: return route on invalid payment details 2019-07-04 09:27:16 +02:00
Joost Jager ae46fb00cb routing+channeldb: add more failure reasons 2019-07-04 09:27:12 +02:00
Joost Jager e2af3c0fa7 routerrpc: fix loop variable binding bug in querymc
This bug caused all node pubkey to be the same.
2019-06-26 16:48:46 +02:00
Joost Jager f03533c67a routerrpc: convert sendpayment to async
Modify the routerrpc SendPayment api to asynchronous. This allows
callers to pick up a payment after the rpc connection was lost or lnd
was restarted.
2019-06-05 12:41:53 +02:00
Joost Jager eb700d35e1 routerrpc: extend payment request parameters
Add missing parameters to routerrpc version of SendPayment.
2019-06-05 12:41:45 +02:00
Joost Jager 19d5f8f82c routing: move default cltv assignment out of router
This commit lifts default setting up to the rpc server level, in line
with other payment defaults.
2019-06-05 12:41:43 +02:00
Joost Jager 054e42f680 routing+routerrpc: expose mission control parameters in lnd config
This commit exposes the three main parameters that influence mission
control and path finding to the user as command line or config file
flags. It allows for fine-tuning for optimal results.
2019-06-04 13:22:50 +02:00
Joost Jager f7982f0f4c routing+routerrpc: expose mission control state over rpc
This commit exposes mission control state for rpc for development
purposes.
2019-06-04 10:00:27 +02:00
Joost Jager 7133f37bb8 routing: global probability based mission control
Previously every payment had its own local mission control state which
was in effect only for that payment. In this commit most of the local
state is removed and payments all tap into the global mission control
probability estimator.

Furthermore the decay time of pruned edges and nodes is extended, so
that observations about the network can better benefit future payment
processes.

Last, the probability function is transformed from a binary output to a
gradual curve, allowing for a better trade off between candidate routes.
2019-06-04 10:00:25 +02:00
Joost Jager 6b70791c2d routing: use probability source in path finding
This PR replaces the previously used edge and node ignore lists in path
finding by a probability based system. It modifies path finding so that
it not only compares routes on fee and time lock, but also takes route
success probability into account.

Allowing routes to be compared based on success probability is achieved
by introducing a 'virtual' cost of a payment attempt and using that to
translate probability into another cost factor.
2019-06-04 10:00:21 +02:00
Joost Jager 68f2a04f42 routerrpc: expose mission control reset rpc 2019-06-04 10:00:17 +02:00
Joost Jager 1b5655f7fa Merge pull request #3113 from joostjager/sendtoroute-error-fix
routing: return structured error for send to route
2019-05-30 23:20:14 +02:00
Joost Jager 1fc01370bf routerrpc: marshall missing channel update data 2019-05-29 14:07:03 +02:00
Joost Jager cc88bfb560 routerrpc: proto comments updated 2019-05-29 14:07:01 +02:00
Johan T. Halseth 1df148d8ef routerrpc test: run make fmt 2019-05-27 12:33:43 +02:00
Joost Jager 9a4c0d5699 lnrpc: upgrade to protobuf v1.3.1
This commit upgrades the protobuf version. Compared to the previous
v1.2.0 it generates smaller diffs in generated code. This change was
introduced in:

https://github.com/golang/protobuf/commit/fffb0f78287ac709b1395be9708df0b579a385f7
2019-05-20 15:35:14 +02:00
Johan T. Halseth 15bed506b1 routing/route+multi: remove redundant TotalFees field
Instead get it on demand using method TotalFees().
2019-05-16 23:58:32 +02:00
Joost Jager c97592692c routerrpc: add SendToRoute with structured failure message 2019-05-15 11:54:46 +02:00
Joost Jager b2eb2619bf routerrpc: connect UnmarshallRoute to existing config fields 2019-05-15 11:54:46 +02:00
Joost Jager 0b66d56aab routerrpc: move UnmarshallRoute to sub server 2019-05-13 12:55:56 +02:00
Joost Jager 7a5bd29a69 lnrpc+routing: remove k shortest path finding 2019-05-07 19:54:06 +02:00
Johan T. Halseth ee257fd0eb multi: move Route to sub-pkg routing/route 2019-04-29 14:52:33 +02:00
Johan T. Halseth f1677e7199 lnrpc/routerrpc: make fmt on router backend test 2019-04-05 17:25:49 +02:00
Joost Jager 6b6dd30aa7 routerrpc: register router sub server logger 2019-03-27 11:44:49 +01:00
Joost Jager 087de7cc4d routerrpc: adapt to changed interfaces of routing subsystem 2019-03-21 10:25:55 +01:00
Olaoluwa Osuntokun a24eeb9135 lnrpc/routerrpc: style fix ups 2019-03-12 21:20:21 -07:00
Joost Jager 293971cd03 routerrpc: move query routes into sub server
This commit moves the query routes backend logic from the main
rpc server into the sub server. It is another step towards splitting up
the main rpc server code.

In addition to this, a unit test is added to verify rpc parameter
parsing.
2019-03-11 09:56:16 +01:00
Olaoluwa Osuntokun cfd6a0d860 lnrpc/routerrpc: add config, implement full RouterServer
In this commit, we implement the full RouterServer as specified by the
newly added sub-service as defined in router.proto. This new sub-server
has its own macaroon state (but overlapping permissions which can be
combined with the current admin.macaroon), and gives users a simplified
interface for a gRPC service that is able to simply send payment. Much
of the error reporting atm, is a place holder, and a follow up commit
will put up the infrastructure for a proper set of errors.
2019-02-20 16:10:39 -08:00