From b7509897d5aca573ee417e03b0997fed68dfa21c Mon Sep 17 00:00:00 2001 From: Elle Mouton Date: Wed, 5 Feb 2025 08:20:10 +0200 Subject: [PATCH] models: create a helper to convert wire NodeAnn to models.LNNode type And use it in the gossiper. This helps ensure that we do this conversion consistently. --- discovery/gossiper.go | 16 +--------------- graph/db/models/node.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 15 deletions(-) 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, + } +}