lnd/routing
Olaoluwa Osuntokun b73a6e2c61
routing: if MaxShardAmt is set, then use that as a ceiling for our splits
In this commit, we thread through the necessary state to allow users to
set a max shard amount. If this value is set, then this'll effectively
serve as a ceiling for all our split attempts. If we need to split,
we'll first try to use `paymentAmt/2`, if that's bigger than
`MaxShardAmt, then we'll use the latter instead.

Ideally in the future we have a dynamic way to automatically set both
the `MaxShardAmt` as well as `MaxParts` for users. Until then exposing
these two new fields will allow us to experiment with setting them
automatically using the RPC interface, and also give users a bit more
control over how we attempt to route payments, akin to coin control for
on-chain payments.

Fixes #4730
2021-02-15 19:31:52 -08:00
..
chainview kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
localchans routing+lnrpc+lncli: allow setting min htlc policy 2019-12-11 00:17:08 +01:00
route channeldb: validate MPP options when registering attempts 2020-04-02 19:31:23 +02:00
testdata routing: fix max route length test 2019-12-20 11:00:03 +01:00
ann_validation.go routing: skip max htlc validation when capacity is 0 2019-04-18 21:57:38 -07:00
control_tower_test.go routing: return full htlc attempt from shard handler 2020-05-12 19:56:50 +02:00
control_tower.go routing: return full htlc attempt from shard handler 2020-05-12 19:56:50 +02:00
errors.go routing: remove unused code 2020-04-24 19:15:08 +02:00
graph.go multi: rename ReadTx to RTx 2020-05-26 18:20:37 -07:00
heap_test.go routing: optimize path finding structures 2019-10-24 21:38:07 -03:00
heap.go routing: limit routing info size during pathfinding 2019-12-20 11:00:05 +01:00
integrated_routing_context_test.go routing: if MaxShardAmt is set, then use that as a ceiling for our splits 2021-02-15 19:31:52 -08:00
integrated_routing_test.go routing: if MaxShardAmt is set, then use that as a ceiling for our splits 2021-02-15 19:31:52 -08:00
log.go routing: define subsystem constant 2019-12-11 00:17:04 +01:00
missioncontrol_state_test.go routing: stricter mission control state failure updates 2020-03-28 07:49:23 +01:00
missioncontrol_state.go routing: stricter mission control state failure updates 2020-03-28 07:49:23 +01:00
missioncontrol_store_test.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
missioncontrol_store.go multi: add reset closure to kvdb.Update 2020-11-05 17:57:12 +01:00
missioncontrol_test.go routing: extract probability estimator cfg and add validation 2021-01-19 10:57:13 +02:00
missioncontrol.go routing: add getter and setter for mission control config 2021-01-19 10:57:14 +02:00
mock_graph_test.go routing/test: use fixed identifiers in test graph 2020-04-09 08:20:43 +02:00
mock_test.go multi: add get and set mission control to routerrpc 2021-01-19 10:57:15 +02:00
nodepair.go routing: extended DirectedNodePair functionality 2019-08-13 18:45:06 +02:00
notifications_test.go routing: add missing GlobalFeatures to NetworkNodeUpdate 2020-12-07 15:47:09 +01:00
notifications.go routing: add missing GlobalFeatures to NetworkNodeUpdate 2020-12-07 15:47:09 +01:00
pathfind_test.go routing: add proportional attempt cost 2020-09-08 15:47:08 +02:00
pathfind.go routing: add proportional attempt cost 2020-09-08 15:47:08 +02:00
payment_lifecycle_test.go routing/payment_lifecycle_test: add MPP test cases 2020-04-02 19:29:15 +02:00
payment_lifecycle.go routing: promote shard logs on resume and terminal failure to Info 2020-11-24 14:59:39 +01:00
payment_session_source.go routing: move payment session constructor 2020-04-16 16:25:24 +02:00
payment_session_test.go router: move self node out of config 2021-01-19 10:57:10 +02:00
payment_session.go routing: if MaxShardAmt is set, then use that as a ceiling for our splits 2021-02-15 19:31:52 -08:00
probability_estimator_test.go routing: extract probability estimator cfg and add validation 2021-01-19 10:57:13 +02:00
probability_estimator.go routing: extract probability estimator cfg and add validation 2021-01-19 10:57:13 +02:00
README.md multi: unify code blocks in READMEs 2021-01-22 09:14:11 +01:00
result_interpretation_test.go routing: continue trying after mpp timeout 2020-04-09 08:20:52 +02:00
result_interpretation.go routing: continue trying after mpp timeout 2020-04-09 08:20:52 +02:00
router_test.go routing: extract probability estimator cfg and add validation 2021-01-19 10:57:13 +02:00
router.go lnrpc/routerrpc+routing: add new MaxShardAmt field to LightningPayment 2021-02-15 19:31:49 -08:00
stats.go routing/router: log aggregate graph processing stats 2019-06-13 18:18:30 -07:00
unified_policies_test.go routing: use unified policy for path finding 2019-10-25 11:22:28 +02:00
unified_policies.go routing+routerrpc: add multiple outgoing channel restriction 2020-05-12 07:17:24 +02: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