diff --git a/discovery/gossiper.go b/discovery/gossiper.go index 290e529bd..2afd38c28 100644 --- a/discovery/gossiper.go +++ b/discovery/gossiper.go @@ -1982,21 +1982,7 @@ func (d *AuthenticatedGossiper) addNode(msg *lnwire.NodeAnnouncement, err) } - timestamp := time.Unix(int64(msg.Timestamp), 0) - features := lnwire.NewFeatureVector(msg.Features, lnwire.Features) - node := &models.LightningNode{ - HaveNodeAnnouncement: true, - LastUpdate: timestamp, - Addresses: msg.Addresses, - PubKeyBytes: msg.NodeID, - Alias: msg.Alias.String(), - AuthSigBytes: msg.Signature.ToSignatureBytes(), - Features: features, - Color: msg.RGBColor, - ExtraOpaqueData: msg.ExtraOpaqueData, - } - - return d.cfg.Graph.AddNode(node, op...) + return d.cfg.Graph.AddNode(models.NodeFromWireAnnouncement(msg), op...) } // isPremature decides whether a given network message has a block height+delta diff --git a/graph/db/models/node.go b/graph/db/models/node.go index 962415433..ee769ddb6 100644 --- a/graph/db/models/node.go +++ b/graph/db/models/node.go @@ -131,3 +131,22 @@ func (l *LightningNode) NodeAnnouncement(signed bool) (*lnwire.NodeAnnouncement, return nodeAnn, nil } + +// NodeFromWireAnnouncement creates a LightningNode instance from an +// lnwire.NodeAnnouncement message. +func NodeFromWireAnnouncement(msg *lnwire.NodeAnnouncement) *LightningNode { + timestamp := time.Unix(int64(msg.Timestamp), 0) + features := lnwire.NewFeatureVector(msg.Features, lnwire.Features) + + return &LightningNode{ + HaveNodeAnnouncement: true, + LastUpdate: timestamp, + Addresses: msg.Addresses, + PubKeyBytes: msg.NodeID, + Alias: msg.Alias.String(), + AuthSigBytes: msg.Signature.ToSignatureBytes(), + Features: features, + Color: msg.RGBColor, + ExtraOpaqueData: msg.ExtraOpaqueData, + } +}