lnd.xprv/routing
Roei Erez 9781ea0082 router: Optimize pruneZombieChannels.
The current approach iterates all channels in the graph in order to
filter those in need. This approach is time consuming, several seconds
on my mobile device for ~40,000 channels, while during this time the
db is locked in a transaction.

The proposed change is to use an existing functionality that utilize the
fact that channel update are saved indexed by date. This method enables
us to go over only a small subset of the channels, only those that
were updated before the "channel expiry" time and further filter
them for our need.
The same graph that took several seconds to prune was pruned, after
the change, in several milliseconds.

In addition for testing purposes I added Initiator field to the
testChannel structure to reflect the channeldEdgePolicy direction.
2019-07-16 17:48:07 +03:00
..
chainview multi: update build to latest version of neutrino+btcwallet 2019-03-13 15:03:39 -07:00
route routing: Route String() method 2019-06-04 10:00:15 +02:00
testdata routing: update test edge policy fields to include max htlc + new flags 2019-03-01 08:05:27 -08:00
ann_validation.go routing: skip max htlc validation when capacity is 0 2019-04-18 21:57:38 -07:00
conf_experimental.go routing/conf: add experimental assume valid conf 2018-09-03 20:15:18 -07:00
conf.go routing/conf: add experimental assume valid conf 2018-09-03 20:15:18 -07:00
control_tower_test.go channeldb: add subscription to control tower 2019-06-05 12:41:49 +02:00
control_tower.go routing+routerrpc+channeldb: return route on invalid payment details 2019-07-04 09:27:16 +02:00
errors.go routing: return ErrRejected if found in reject cache 2018-08-23 07:40:40 +02: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: add index map to distanceHeap 2019-07-12 06:08:01 -04:00
heap.go routing: add index map to distanceHeap 2019-07-12 06:08:01 -04:00
log.go multi: init subsystem loggers via build pkg 2018-10-05 13:04:45 +09:00
missioncontrol_test.go routing+routerrpc: expose mission control parameters in lnd config 2019-06-04 13:22:50 +02:00
missioncontrol.go routing+routerrpc: expose mission control parameters in lnd config 2019-06-04 13:22:50 +02:00
mock_test.go multi: make GetPaymentResult take payment hash 2019-06-07 16:53:32 +02:00
notifications_test.go routing: add color to node update 2019-05-23 10:52:12 +02:00
notifications.go routing: add color to node update 2019-05-23 10:52:12 +02:00
pathfind_test.go router: Optimize pruneZombieChannels. 2019-07-16 17:48:07 +03:00
pathfind.go routing: add index map to distanceHeap 2019-07-12 06:08:01 -04:00
payment_lifecycle.go htlcswitch: use distinct error for unreadable failures 2019-07-11 19:49:45 +02:00
payment_session_test.go routing: move default cltv assignment out of router 2019-06-05 12:41:43 +02:00
payment_session.go routing+routerrpc: expose mission control parameters in lnd config 2019-06-04 13:22:50 +02:00
README.md multi: fix formatting issues in packge README's 2017-03-27 16:25:25 -07:00
router_test.go router: Optimize pruneZombieChannels. 2019-07-16 17:48:07 +03:00
router.go router: Optimize pruneZombieChannels. 2019-07-16 17:48:07 +03:00
stats.go routing/router: log aggregate graph processing stats 2019-06-13 18:18:30 -07:00
validation_barrier_test.go routing/validation_barrier_test: test semaphore and quit 2018-05-08 16:32:08 -07:00
validation_barrier.go multi: move Route to sub-pkg routing/route 2019-04-29 14:52:33 +02: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