lnd/routing
Olaoluwa Osuntokun 8ef829ed80
routing: modify SendPayment loop to be lazy, iterative, and use missionControl
In this commit we modify the SendPayment loop to optimize for
time-to-first-payment-success-or-failure. The prior logic would first
attempt to find at least 100 routes to the destination, then
iteratively prune them away as errors were encountered. In this commit,
we modify this approach to instead take a lazy approach: we first find
the current “best” path, attempt to send to that, and if an error
occurs we prune a section of the graph by reporting to missionControl,
then continue.

With this new approach, if the first known path has sufficient
capacity, and is available, then the payment speed is greatly improved
from the PoV of users. Additionally, we avoid the excessive computation
of crawling most of the graph in the k-shortest paths loop. With the
decay on missionControl, all routes will now feed information into the
central knowledge hung, allowing all payments to iteratively find out
the inactive portions of the payment graph.
2017-10-16 19:05:47 -07:00
..
chainview routing/chainview: Fix data race in block disconnected callback. 2017-09-29 13:53:02 -07:00
testdata routing: add proper test for excessive number of hops 2017-02-02 00:24:16 -08:00
errors.go routing: Require adding edge to node before adding node. 2017-08-02 15:58:58 -07:00
graph.go routing: rewrite package to conform to BOLT07 and factor in fees+timelocks 2016-12-27 16:44:22 -08:00
heap_test.go routing: replace sort.Sort with sort.Slice in heap_test.go 2017-10-02 23:13:47 -07:00
heap.go routing: introduce new heap for storing candidate shortest paths 2017-03-21 12:20:30 -07:00
log.go lnd: remove seelog logger 2017-06-25 14:19:56 +01:00
missioncontrol.go routing: introduce new missionControl system within ChannelRouter 2017-10-16 18:57:36 -07:00
notifications_test.go routing: update path finding and notifications to use mSAT 2017-08-22 00:53:12 -07:00
notifications.go routing: update path finding and notifications to use mSAT 2017-08-22 00:53:12 -07:00
pathfind_test.go routing: perform path finding inside a single DB transaction 2017-10-10 22:19:27 -07:00
pathfind.go routing: avoid internal bolt db deadlock by reusing transaction in findPath 2017-10-16 18:48:27 -07:00
README.md multi: fix formatting issues in packge README's 2017-03-27 16:25:25 -07:00
router_test.go routing: add a basic test to exercise route pruning in response to errors 2017-10-10 22:19:25 -07:00
router.go routing: modify SendPayment loop to be lazy, iterative, and use missionControl 2017-10-16 19:05:47 -07:00

routing

Build Status MIT licensed GoDoc

The routing package implements authentication+validation of channel announcements, pruning of the channel graph, path finding within the network, sending outgoing payments into the network and synchronizing new peers to our channel graph state.

Installation and Updating

$ go get -u github.com/lightningnetwork/lnd/routing