channeldb: add support for channel graph pruning

This commit adds support for channel graph pruning, which is the method
used to keep the channel graph in sync with the current UTXO state. As
the channel graph is essentially simply a subset of the UTXO set, by
evaluating the channel graph with the set of outfits spent within a
block, then we’re able to prune channels that’ve been closed by
spending their funding outpoint. A new method `PruneGraph` has been
provided which implements the described functionality.

Upon start up any upper routing layers should sync forward in the chain
pruning the channel graph with each newly found block. In order to
facilitate such channel graph reconciliation a new method `PruneTip`
has been added which allows callers to query current pruning state of
the channel graph.
This commit is contained in:
Olaoluwa Osuntokun
2016-12-19 16:58:27 -08:00
parent cbd26b35e0
commit 12538ea922
4 changed files with 359 additions and 45 deletions

View File

@@ -23,6 +23,7 @@ var (
ErrGraphNodesNotFound = fmt.Errorf("no graph nodes exist")
ErrGraphNoEdgesFound = fmt.Errorf("no graph edges exist")
ErrGraphNodeNotFound = fmt.Errorf("unable to find node")
ErrGraphNeverPruned = fmt.Errorf("graph never pruned")
ErrEdgeNotFound = fmt.Errorf("edge for chanID not found")