routing: add strict pruning as new flag, default for neutrino
In this commit we add a new flag that controls if lnd will do strict zombie pruning or not. If true, then this will cause lnd to maintain a tighter graph as it wants both edges to always be live. We enable this by default for neutrino as without this, it's possible that a node never sees both edges begin disabled, so those edges are never actually pruned from the graph.
This commit is contained in:
parent
7b589e5811
commit
6c27de7d11
@ -2,5 +2,7 @@ package lncfg
|
|||||||
|
|
||||||
// Routing holds the configuration options for routing.
|
// Routing holds the configuration options for routing.
|
||||||
type Routing struct {
|
type Routing struct {
|
||||||
AssumeChannelValid bool `long:"assumechanvalid" description:"DEPRECATED: This is now turned on by default for Neutrino (use neutrino.validatechannels=true to turn off) and shouldn't be used for any other backend! (default: false)"`
|
AssumeChannelValid bool `long:"assumechanvalid" description:"Skip checking channel spentness during graph validation. This speedup comes at the risk of using an unvalidated view of the network for routing. (default: false)"`
|
||||||
|
|
||||||
|
StrictZombiePruning bool `long:"strictgraphpruning" description:"If true, then the graph will be pruned more aggressively for zombies. In practice this means that edges with a single stale edge will be considered a zombie."`
|
||||||
}
|
}
|
||||||
|
@ -489,6 +489,12 @@ bitcoin.node=btcd
|
|||||||
; other backend!
|
; other backend!
|
||||||
; --routing.assumechanvalid=true
|
; --routing.assumechanvalid=true
|
||||||
|
|
||||||
|
; If set to true, then we'll prune a channel if only a single edge is seen as
|
||||||
|
; being stale. This results in a more compact channel graph, and also is helpful
|
||||||
|
; for neutrino nodes as it means they'll only maintain edges where both nodes are
|
||||||
|
; seen as being live from it's PoV.
|
||||||
|
; --routing.strictgraphpruning=true
|
||||||
|
|
||||||
[Btcd]
|
[Btcd]
|
||||||
|
|
||||||
; The base directory that contains the node's data, logs, configuration file,
|
; The base directory that contains the node's data, logs, configuration file,
|
||||||
|
@ -768,6 +768,8 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
|||||||
|
|
||||||
s.controlTower = routing.NewControlTower(paymentControl)
|
s.controlTower = routing.NewControlTower(paymentControl)
|
||||||
|
|
||||||
|
strictPruning := (cfg.Bitcoin.Node == "neutrino" ||
|
||||||
|
cfg.Routing.StrictZombiePruning)
|
||||||
s.chanRouter, err = routing.New(routing.Config{
|
s.chanRouter, err = routing.New(routing.Config{
|
||||||
Graph: chanGraph,
|
Graph: chanGraph,
|
||||||
Chain: cc.ChainIO,
|
Chain: cc.ChainIO,
|
||||||
@ -784,6 +786,7 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
|||||||
NextPaymentID: sequencer.NextID,
|
NextPaymentID: sequencer.NextID,
|
||||||
PathFindingConfig: pathFindingConfig,
|
PathFindingConfig: pathFindingConfig,
|
||||||
Clock: clock.NewDefaultClock(),
|
Clock: clock.NewDefaultClock(),
|
||||||
|
StrictZombiePruning: strictPruning,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("can't create router: %v", err)
|
return nil, fmt.Errorf("can't create router: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user