Skip to content

Commit 53bdf65

Browse files
committed
lnwire: add NodeAnnouncement2
1 parent 9d67b34 commit 53bdf65

File tree

3 files changed

+519
-0
lines changed

3 files changed

+519
-0
lines changed

lnwire/lnwire_test.go

+85
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package lnwire
33
import (
44
"bytes"
55
crand "crypto/rand"
6+
"encoding/base64"
67
"encoding/binary"
78
"encoding/hex"
89
"fmt"
@@ -1660,6 +1661,83 @@ func TestLightningWireProtocol(t *testing.T) {
16601661
ChanUpdateDisableOutgoing
16611662
}
16621663

1664+
v[0] = reflect.ValueOf(req)
1665+
},
1666+
MsgNodeAnnouncement2: func(v []reflect.Value, r *rand.Rand) {
1667+
var req NodeAnnouncement2
1668+
1669+
req.ExtraSignedFields = ExtraSignedFields(
1670+
randSignedRangeRecords(t, r),
1671+
)
1672+
req.Signature.Val = testSchnorrSig
1673+
1674+
req.NodeID.Val = randRawKey(t)
1675+
req.BlockHeight.Val = r.Uint32()
1676+
req.Features.Val = *randRawFeatureVector(r)
1677+
1678+
// Sometimes set the colour field.
1679+
if r.Int31()%2 == 0 {
1680+
color := tlv.ZeroRecordT[tlv.TlvType1, Color]()
1681+
color.Val = Color{
1682+
R: uint8(r.Int31()),
1683+
G: uint8(r.Int31()),
1684+
B: uint8(r.Int31()),
1685+
}
1686+
req.Color = tlv.SomeRecordT(color)
1687+
}
1688+
1689+
n := r.Intn(33)
1690+
b := make([]byte, n)
1691+
_, err := rand.Read(b)
1692+
require.NoError(t, err)
1693+
if n > 0 {
1694+
alias := []byte(
1695+
base64.StdEncoding.EncodeToString(b),
1696+
)
1697+
if len(alias) > 32 {
1698+
alias = alias[:32]
1699+
}
1700+
1701+
aliasRec := tlv.ZeroRecordT[
1702+
tlv.TlvType3, []byte,
1703+
]()
1704+
aliasRec.Val = alias
1705+
}
1706+
1707+
// Sometimes add some ipv4 addrs.
1708+
if r.Int31()%2 == 0 {
1709+
ipv4Addr, err := randTCP4Addr(r)
1710+
require.NoError(t, err)
1711+
1712+
ipv4AddrRecord := tlv.ZeroRecordT[
1713+
tlv.TlvType5, IPV4Addrs,
1714+
]()
1715+
ipv4AddrRecord.Val = IPV4Addrs{ipv4Addr}
1716+
req.IPV4Addrs = tlv.SomeRecordT(ipv4AddrRecord)
1717+
}
1718+
// Sometimes add some ipv6 addrs.
1719+
if r.Int31()%2 == 0 {
1720+
ipv6Addr, err := randTCP6Addr(r)
1721+
require.NoError(t, err)
1722+
1723+
ipv6AddrRecord := tlv.ZeroRecordT[
1724+
tlv.TlvType7, IPV6Addrs,
1725+
]()
1726+
ipv6AddrRecord.Val = IPV6Addrs{ipv6Addr}
1727+
req.IPV6Addrs = tlv.SomeRecordT(ipv6AddrRecord)
1728+
}
1729+
// Sometimes add some torv3 addrs.
1730+
if r.Int31()%2 == 0 {
1731+
torAddr, err := randV3OnionAddr(r)
1732+
require.NoError(t, err)
1733+
1734+
torAddrRecord := tlv.ZeroRecordT[
1735+
tlv.TlvType9, TorV3Addrs,
1736+
]()
1737+
torAddrRecord.Val = TorV3Addrs{torAddr}
1738+
req.TorV3Addrs = tlv.SomeRecordT(torAddrRecord)
1739+
}
1740+
16631741
v[0] = reflect.ValueOf(req)
16641742
},
16651743
}
@@ -1902,12 +1980,19 @@ func TestLightningWireProtocol(t *testing.T) {
19021980
return mainScenario(&m)
19031981
},
19041982
},
1983+
19051984
{
19061985
msgType: MsgChannelUpdate2,
19071986
scenario: func(m ChannelUpdate2) bool {
19081987
return mainScenario(&m)
19091988
},
19101989
},
1990+
{
1991+
msgType: MsgNodeAnnouncement2,
1992+
scenario: func(m NodeAnnouncement2) bool {
1993+
return mainScenario(&m)
1994+
},
1995+
},
19111996
}
19121997
for _, test := range tests {
19131998
t.Run(test.msgType.String(), func(t *testing.T) {

lnwire/message.go

+5
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ const (
5959
MsgReplyChannelRange = 264
6060
MsgGossipTimestampRange = 265
6161
MsgChannelAnnouncement2 = 267
62+
MsgNodeAnnouncement2 = 269
6263
MsgChannelUpdate2 = 271
6364
MsgKickoffSig = 777
6465
)
@@ -181,6 +182,8 @@ func (t MessageType) String() string {
181182
return "MsgAnnounceSignatures2"
182183
case MsgChannelAnnouncement2:
183184
return "ChannelAnnouncement2"
185+
case MsgNodeAnnouncement2:
186+
return "NodeAnnouncement2"
184187
case MsgChannelUpdate2:
185188
return "ChannelUpdate2"
186189
default:
@@ -316,6 +319,8 @@ func makeEmptyMessage(msgType MessageType) (Message, error) {
316319
msg = &AnnounceSignatures2{}
317320
case MsgChannelAnnouncement2:
318321
msg = &ChannelAnnouncement2{}
322+
case MsgNodeAnnouncement2:
323+
msg = &NodeAnnouncement2{}
319324
case MsgChannelUpdate2:
320325
msg = &ChannelUpdate2{}
321326
default:

0 commit comments

Comments
 (0)