lnd/routing
bitromortac 75a9dc9103
routing: limit capacity factor and tune parameters
* The maximal reduction in the probability is limited to 0.5 (previously
  ~0.05), such that we don't get too low apriori probabilities.
  Otherwise, this may lead to a too strong selection of large (and maybe
  expensive) channels. A two-hop path would get total probability
  penalties of:

  - 1000PPM/(0.6*0.6) = 2778 PPM in the unsaturated case
  - 1000PPM/(0.6*(0.6*0.5)) = 5556 PPM in the saturated case, where the
    second hop is saturated

  The difference in PPM of 2778 PPM should be enough to bias towards the
  first path.

* The smearing factor is reduced. Previously we had to keep a higher
  smearing factor in order to make the capacity factor not go to zero
  for high amounts, to still give a fully saturated channel a chance.
  This is not needed anymore due to the capping to 0.5. A lower value of
  the smearing factor lets us more precisely choose a capacity fraction
  and the capacity factor is more neutral when it comes to intermediate
  amounts.

We set a conservative default value for the capacity fraction, which
still has the effect of discarding exhausted channels, giving a
noticeable effect when about 90% of the capacity is being used.
2023-02-24 15:28:55 +01:00
..
chainview routing: use T.TempDir to create temporary test directory 2022-08-24 09:03:05 +08:00
localchans multi: rename due to required maxHTLC bit 2023-02-21 11:10:39 +01:00
route routing+channeldb: send payment metadata from invoice 2022-04-13 22:55:40 +02:00
shards multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
testdata routing: add private key attribute in router test 2021-06-23 18:13:02 +08:00
ann_validation.go routing: stricter maxHTLC checks 2023-02-21 14:03:51 +01:00
bandwidth_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
bandwidth.go routing: add more verbose logs 2023-01-17 07:26:57 +08:00
control_tower_test.go routing: rename Fail to FailPayment 2022-12-07 18:38:01 +08:00
control_tower.go routing: rename Fail to FailPayment 2022-12-07 18:38:01 +08:00
errors.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
graph.go routing+routerrpc: add capacity in rpcs 2022-12-12 13:22:29 +01:00
heap_test.go routing: optimize path finding structures 2019-10-24 21:38:07 -03:00
heap.go multi: use minimal policy in cache 2021-09-29 17:00:04 +02:00
integrated_routing_context_test.go routing+lnrpc: make capacity factor configurable 2023-02-24 15:28:55 +01:00
integrated_routing_test.go lnd+routing+rpc: switch mc to (external) estimator 2023-02-14 13:34:25 +01:00
log.go routing: define subsystem constant 2019-12-11 00:17:04 +01:00
missioncontrol_state_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
missioncontrol_state.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
missioncontrol_store_test.go routing: use T.TempDir to create temporary test directory 2022-08-24 09:03:05 +08:00
missioncontrol_store.go lnwire: allow longer failure messages 2022-12-02 14:27:59 +01:00
missioncontrol_test.go routing+lnrpc: make capacity factor configurable 2023-02-24 15:28:55 +01:00
missioncontrol.go lnd+routing+rpc: switch mc to (external) estimator 2023-02-14 13:34:25 +01:00
mock_graph_test.go routing+routerrpc: add capacity in rpcs 2022-12-12 13:22:29 +01:00
mock_test.go routing: use capacity in pathfinding 2022-12-12 13:22:28 +01:00
nodepair.go routing: extended DirectedNodePair functionality 2019-08-13 18:45:06 +02:00
notifications_test.go routing: replace defer cleanup with t.Cleanup 2022-10-13 17:47:04 +08:00
notifications.go routing: remove the mutex and use SyncMap instead 2023-01-19 07:08:18 +08:00
pathfind_test.go multi: rename due to required maxHTLC bit 2023-02-21 11:10:39 +01:00
pathfind.go lnd+routerrpc: configure server with new estimator 2023-02-14 13:34:25 +01:00
payment_lifecycle_test.go routing: fix race condition in TestUpdatePaymentState 2023-01-17 14:26:37 -08:00
payment_lifecycle.go multi: enhance loggings and fix logging format 2023-02-23 21:56:08 +08:00
payment_session_source.go routing+routerrpc: add capacity in rpcs 2022-12-12 13:22:29 +01:00
payment_session_test.go router: return probability from findPath 2022-12-12 13:22:29 +01:00
payment_session.go router: return probability from findPath 2022-12-12 13:22:29 +01:00
probability_apriori_test.go routing: limit capacity factor and tune parameters 2023-02-24 15:28:55 +01:00
probability_apriori.go routing: limit capacity factor and tune parameters 2023-02-24 15:28:55 +01:00
probability_bimodal_test.go routing: implement bimodal probability estimator 2023-02-14 13:34:25 +01:00
probability_bimodal.go routing: implement bimodal probability estimator 2023-02-14 13:34:25 +01:00
probability_estimator_test.go routing: add probability benchmarks 2023-02-14 13:34:25 +01:00
probability_estimator.go routing: add probability estimator interface 2023-02-10 09:58:40 +01:00
README.md scripted-diff: replace ⛰ emoji with $ [skip ci] 2022-10-28 12:06:49 -04:00
result_interpretation_test.go multi: run gosimports 2022-02-10 11:02:01 +01:00
result_interpretation.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
router_test.go routing+lnrpc: make capacity factor configurable 2023-02-24 15:28:55 +01:00
router.go routing: remove the mutex and use SyncMap instead 2023-01-19 07:08:18 +08:00
setup_test.go channeldb/test: test with postgres 2021-10-29 10:54:44 +02:00
stats.go routing/router: log aggregate graph processing stats 2019-06-13 18:18:30 -07:00
unified_edges_test.go multi: rename due to required maxHTLC bit 2023-02-21 11:10:39 +01:00
unified_edges.go multi: enhance loggings and fix logging format 2023-02-23 21:56:08 +08:00
validation_barrier_test.go routing+discovery: uniform error codes in routing 2022-01-05 04:27:33 +08:00
validation_barrier.go multi: enhance loggings and fix logging format 2023-02-23 21:56:08 +08: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