mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-11-18 10:06:51 +01:00
lnd+graph: add GraphBootstrapper to the GraphSource interface
So that LND can use a different GraphSource for network bootstrapping and does not need to rely on its local graph db.
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
||||
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/lightningnetwork/lnd/autopilot"
|
||||
"github.com/lightningnetwork/lnd/discovery"
|
||||
graphdb "github.com/lightningnetwork/lnd/graph/db"
|
||||
"github.com/lightningnetwork/lnd/graph/db/models"
|
||||
"github.com/lightningnetwork/lnd/graph/session"
|
||||
@@ -217,6 +219,18 @@ func (s *DBSource) FetchLightningNode(_ context.Context,
|
||||
return s.db.FetchLightningNode(nodePub)
|
||||
}
|
||||
|
||||
// GraphBootstrapper returns a NetworkPeerBootstrapper instance backed by the
|
||||
// ChannelGraph instance.
|
||||
//
|
||||
// NOTE: this is part of the GraphSource interface.
|
||||
func (s *DBSource) GraphBootstrapper(_ context.Context) (
|
||||
discovery.NetworkPeerBootstrapper, error) {
|
||||
|
||||
chanGraph := autopilot.ChannelGraphFromDatabase(s.db)
|
||||
|
||||
return discovery.NewGraphBootstrapper(chanGraph)
|
||||
}
|
||||
|
||||
// kvdbRTx is an implementation of graphdb.RTx backed by a KVDB database read
|
||||
// transaction.
|
||||
type kvdbRTx struct {
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/lightningnetwork/lnd/channeldb"
|
||||
"github.com/lightningnetwork/lnd/discovery"
|
||||
"github.com/lightningnetwork/lnd/graph/db/models"
|
||||
"github.com/lightningnetwork/lnd/graph/session"
|
||||
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
||||
@@ -68,4 +69,9 @@ type GraphSource interface {
|
||||
// graphdb.ErrGraphNodeNotFound is returned.
|
||||
FetchLightningNode(ctx context.Context, nodePub route.Vertex) (
|
||||
*models.LightningNode, error)
|
||||
|
||||
// GraphBootstrapper returns a network peer bootstrapper that can be
|
||||
// used to discover new peers to connect to.
|
||||
GraphBootstrapper(ctx context.Context) (
|
||||
discovery.NetworkPeerBootstrapper, error)
|
||||
}
|
||||
|
||||
@@ -2817,6 +2817,7 @@ out:
|
||||
// based on the server, and currently active bootstrap mechanisms as defined
|
||||
// within the current configuration.
|
||||
func initNetworkBootstrappers(s *server) ([]discovery.NetworkPeerBootstrapper, error) {
|
||||
ctx := context.TODO()
|
||||
srvrLog.Infof("Initializing peer network bootstrappers!")
|
||||
|
||||
var bootStrappers []discovery.NetworkPeerBootstrapper
|
||||
@@ -2824,8 +2825,7 @@ func initNetworkBootstrappers(s *server) ([]discovery.NetworkPeerBootstrapper, e
|
||||
// First, we'll create an instance of the ChannelGraphBootstrapper as
|
||||
// this can be used by default if we've already partially seeded the
|
||||
// network.
|
||||
chanGraph := autopilot.ChannelGraphFromDatabase(s.graphDB)
|
||||
graphBootstrapper, err := discovery.NewGraphBootstrapper(chanGraph)
|
||||
graphBootstrapper, err := s.graphSource.GraphBootstrapper(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user