lnwire: add NodeAnnouncement interface

And ensure that both versions 1 and 2 implement it.
This commit is contained in:
Elle Mouton authored and yyforyongyu committed 2025-11-12 22:54:02 +08:00
1 parent 6cc7a88e99
commit 70054ac402
3 files changed
+68

No files matched your search

+16
View File
@@ -91,6 +91,22 @@ type ChannelUpdate interface {
Message
}
// NodeAnnouncement is an interface that must be satisfied by any message used
// to announce the existence of a node.
type NodeAnnouncement interface {
// NodePub returns the identity public key of the node.
NodePub() [33]byte
// NodeFeatures returns the set of features supported by the node.
NodeFeatures() *FeatureVector
// TimestampDesc returns a human-readable description of the
// timestamp of the announcement.
TimestampDesc() string
Message
}
// ForwardingPolicy defines the set of forwarding constraints advertised in a
// ChannelUpdate message.
type ForwardingPolicy struct {
+26
View File
@@ -104,6 +104,10 @@ type NodeAnnouncement1 struct {
// lnwire.Message interface.
var _ Message = (*NodeAnnouncement1)(nil)
// A compile time check to ensure NodeAnnouncement1 implements the
// lnwire.NodeAnnouncement interface.
var _ NodeAnnouncement = (*NodeAnnouncement1)(nil)
// A compile time check to ensure NodeAnnouncement1 implements the
// lnwire.SizeableMessage interface.
var _ SizeableMessage = (*NodeAnnouncement1)(nil)
@@ -217,3 +221,25 @@ func (a *NodeAnnouncement1) DataToSign() ([]byte, error) {
func (a *NodeAnnouncement1) SerializedSize() (uint32, error) {
return MessageSerializedSize(a)
}
// NodePub returns the identity public key of the node.
//
// NOTE: part of the NodeAnnouncement interface.
func (a *NodeAnnouncement1) NodePub() [33]byte {
return a.NodeID
}
// NodeFeatures returns the set of features supported by the node.
//
// NOTE: part of the NodeAnnouncement interface.
func (a *NodeAnnouncement1) NodeFeatures() *FeatureVector {
return NewFeatureVector(a.Features, Features)
}
// TimestampDesc returns a human-readable description of the timestamp of the
// announcement.
//
// NOTE: part of the NodeAnnouncement interface.
func (a *NodeAnnouncement1) TimestampDesc() string {
return fmt.Sprintf("timestamp=%d", a.Timestamp)
}
+26
View File
@@ -199,10 +199,36 @@ func (n *NodeAnnouncement2) MsgType() MessageType {
return MsgNodeAnnouncement2
}
// NodePub returns the identity public key of the node.
//
// NOTE: part of the NodeAnnouncement interface.
func (n *NodeAnnouncement2) NodePub() [33]byte {
return n.NodeID.Val
}
// NodeFeatures returns the set of features supported by the node.
//
// NOTE: part of the NodeAnnouncement interface.
func (n *NodeAnnouncement2) NodeFeatures() *FeatureVector {
return NewFeatureVector(&n.Features.Val, Features)
}
// TimestampDesc returns a human-readable description of the timestamp of the
// announcement.
//
// NOTE: part of the NodeAnnouncement interface.
func (n *NodeAnnouncement2) TimestampDesc() string {
return fmt.Sprintf("block_height=%d", n.BlockHeight.Val)
}
// A compile-time check to ensure NodeAnnouncement2 implements the Message
// interface.
var _ Message = (*NodeAnnouncement2)(nil)
// A compile time check to ensure NodeAnnouncement2 implements the
// lnwire.NodeAnnouncement interface.
var _ NodeAnnouncement = (*NodeAnnouncement2)(nil)
// A compile-time check to ensure NodeAnnouncement2 implements the
// PureTLVMessage interface.
var _ PureTLVMessage = (*NodeAnnouncement2)(nil)