discovery/multi: move CreateChanAnnouncement to netann
This commit is contained in:
parent
d82aacbdc5
commit
6a813e3433
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||||
"github.com/lightningnetwork/lnd/channeldb"
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
"github.com/lightningnetwork/lnd/lnwire"
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
|
"github.com/lightningnetwork/lnd/netann"
|
||||||
"github.com/lightningnetwork/lnd/routing/route"
|
"github.com/lightningnetwork/lnd/routing/route"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ func (c *ChanSeries) UpdatesInHorizon(chain chainhash.Hash,
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
chanAnn, edge1, edge2, err := CreateChanAnnouncement(
|
chanAnn, edge1, edge2, err := netann.CreateChanAnnouncement(
|
||||||
channel.Info.AuthProof, channel.Info, channel.Policy1,
|
channel.Info.AuthProof, channel.Info, channel.Policy1,
|
||||||
channel.Policy2,
|
channel.Policy2,
|
||||||
)
|
)
|
||||||
@ -258,7 +259,7 @@ func (c *ChanSeries) FetchChanAnns(chain chainhash.Hash,
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
chanAnn, edge1, edge2, err := CreateChanAnnouncement(
|
chanAnn, edge1, edge2, err := netann.CreateChanAnnouncement(
|
||||||
channel.Info.AuthProof, channel.Info, channel.Policy1,
|
channel.Info.AuthProof, channel.Info, channel.Policy1,
|
||||||
channel.Policy2,
|
channel.Policy2,
|
||||||
)
|
)
|
||||||
|
@ -1401,7 +1401,7 @@ func (d *AuthenticatedGossiper) processRejectedEdge(
|
|||||||
|
|
||||||
// We'll then create then validate the new fully assembled
|
// We'll then create then validate the new fully assembled
|
||||||
// announcement.
|
// announcement.
|
||||||
chanAnn, e1Ann, e2Ann, err := CreateChanAnnouncement(
|
chanAnn, e1Ann, e2Ann, err := netann.CreateChanAnnouncement(
|
||||||
proof, chanInfo, e1, e2,
|
proof, chanInfo, e1, e2,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -2158,7 +2158,7 @@ func (d *AuthenticatedGossiper) processNetworkAnnouncement(
|
|||||||
msg.ChannelID,
|
msg.ChannelID,
|
||||||
peerID)
|
peerID)
|
||||||
|
|
||||||
chanAnn, _, _, err := CreateChanAnnouncement(
|
chanAnn, _, _, err := netann.CreateChanAnnouncement(
|
||||||
chanInfo.AuthProof, chanInfo,
|
chanInfo.AuthProof, chanInfo,
|
||||||
e1, e2,
|
e1, e2,
|
||||||
)
|
)
|
||||||
@ -2241,7 +2241,7 @@ func (d *AuthenticatedGossiper) processNetworkAnnouncement(
|
|||||||
dbProof.BitcoinSig1Bytes = oppositeProof.BitcoinSignature.ToSignatureBytes()
|
dbProof.BitcoinSig1Bytes = oppositeProof.BitcoinSignature.ToSignatureBytes()
|
||||||
dbProof.BitcoinSig2Bytes = msg.BitcoinSignature.ToSignatureBytes()
|
dbProof.BitcoinSig2Bytes = msg.BitcoinSignature.ToSignatureBytes()
|
||||||
}
|
}
|
||||||
chanAnn, e1Ann, e2Ann, err := CreateChanAnnouncement(
|
chanAnn, e1Ann, e2Ann, err := netann.CreateChanAnnouncement(
|
||||||
&dbProof, chanInfo, e1, e2,
|
&dbProof, chanInfo, e1, e2,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -3,84 +3,8 @@ package discovery
|
|||||||
import (
|
import (
|
||||||
"github.com/lightningnetwork/lnd/channeldb"
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
"github.com/lightningnetwork/lnd/lnwire"
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
"github.com/lightningnetwork/lnd/netann"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateChanAnnouncement is a helper function which creates all channel
|
|
||||||
// announcements given the necessary channel related database items. This
|
|
||||||
// function is used to transform out database structs into the corresponding wire
|
|
||||||
// structs for announcing new channels to other peers, or simply syncing up a
|
|
||||||
// peer's initial routing table upon connect.
|
|
||||||
func CreateChanAnnouncement(chanProof *channeldb.ChannelAuthProof,
|
|
||||||
chanInfo *channeldb.ChannelEdgeInfo,
|
|
||||||
e1, e2 *channeldb.ChannelEdgePolicy) (*lnwire.ChannelAnnouncement,
|
|
||||||
*lnwire.ChannelUpdate, *lnwire.ChannelUpdate, error) {
|
|
||||||
|
|
||||||
// First, using the parameters of the channel, along with the channel
|
|
||||||
// authentication chanProof, we'll create re-create the original
|
|
||||||
// authenticated channel announcement.
|
|
||||||
chanID := lnwire.NewShortChanIDFromInt(chanInfo.ChannelID)
|
|
||||||
chanAnn := &lnwire.ChannelAnnouncement{
|
|
||||||
ShortChannelID: chanID,
|
|
||||||
NodeID1: chanInfo.NodeKey1Bytes,
|
|
||||||
NodeID2: chanInfo.NodeKey2Bytes,
|
|
||||||
ChainHash: chanInfo.ChainHash,
|
|
||||||
BitcoinKey1: chanInfo.BitcoinKey1Bytes,
|
|
||||||
BitcoinKey2: chanInfo.BitcoinKey2Bytes,
|
|
||||||
Features: lnwire.NewRawFeatureVector(),
|
|
||||||
ExtraOpaqueData: chanInfo.ExtraOpaqueData,
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
chanAnn.BitcoinSig1, err = lnwire.NewSigFromRawSignature(
|
|
||||||
chanProof.BitcoinSig1Bytes,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
chanAnn.BitcoinSig2, err = lnwire.NewSigFromRawSignature(
|
|
||||||
chanProof.BitcoinSig2Bytes,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
chanAnn.NodeSig1, err = lnwire.NewSigFromRawSignature(
|
|
||||||
chanProof.NodeSig1Bytes,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
chanAnn.NodeSig2, err = lnwire.NewSigFromRawSignature(
|
|
||||||
chanProof.NodeSig2Bytes,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// We'll unconditionally queue the channel's existence chanProof as it
|
|
||||||
// will need to be processed before either of the channel update
|
|
||||||
// networkMsgs.
|
|
||||||
|
|
||||||
// Since it's up to a node's policy as to whether they advertise the
|
|
||||||
// edge in a direction, we don't create an advertisement if the edge is
|
|
||||||
// nil.
|
|
||||||
var edge1Ann, edge2Ann *lnwire.ChannelUpdate
|
|
||||||
if e1 != nil {
|
|
||||||
edge1Ann, err = netann.ChannelUpdateFromEdge(chanInfo, e1)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if e2 != nil {
|
|
||||||
edge2Ann, err = netann.ChannelUpdateFromEdge(chanInfo, e2)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return chanAnn, edge1Ann, edge2Ann, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// remotePubFromChanInfo returns the public key of the remote peer given a
|
// remotePubFromChanInfo returns the public key of the remote peer given a
|
||||||
// ChannelEdgeInfo that describe a channel we have with them.
|
// ChannelEdgeInfo that describe a channel we have with them.
|
||||||
func remotePubFromChanInfo(chanInfo *channeldb.ChannelEdgeInfo,
|
func remotePubFromChanInfo(chanInfo *channeldb.ChannelEdgeInfo,
|
||||||
|
81
netann/channel_announcement.go
Normal file
81
netann/channel_announcement.go
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package netann
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CreateChanAnnouncement is a helper function which creates all channel
|
||||||
|
// announcements given the necessary channel related database items. This
|
||||||
|
// function is used to transform out database structs into the corresponding wire
|
||||||
|
// structs for announcing new channels to other peers, or simply syncing up a
|
||||||
|
// peer's initial routing table upon connect.
|
||||||
|
func CreateChanAnnouncement(chanProof *channeldb.ChannelAuthProof,
|
||||||
|
chanInfo *channeldb.ChannelEdgeInfo,
|
||||||
|
e1, e2 *channeldb.ChannelEdgePolicy) (*lnwire.ChannelAnnouncement,
|
||||||
|
*lnwire.ChannelUpdate, *lnwire.ChannelUpdate, error) {
|
||||||
|
|
||||||
|
// First, using the parameters of the channel, along with the channel
|
||||||
|
// authentication chanProof, we'll create re-create the original
|
||||||
|
// authenticated channel announcement.
|
||||||
|
chanID := lnwire.NewShortChanIDFromInt(chanInfo.ChannelID)
|
||||||
|
chanAnn := &lnwire.ChannelAnnouncement{
|
||||||
|
ShortChannelID: chanID,
|
||||||
|
NodeID1: chanInfo.NodeKey1Bytes,
|
||||||
|
NodeID2: chanInfo.NodeKey2Bytes,
|
||||||
|
ChainHash: chanInfo.ChainHash,
|
||||||
|
BitcoinKey1: chanInfo.BitcoinKey1Bytes,
|
||||||
|
BitcoinKey2: chanInfo.BitcoinKey2Bytes,
|
||||||
|
Features: lnwire.NewRawFeatureVector(),
|
||||||
|
ExtraOpaqueData: chanInfo.ExtraOpaqueData,
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
chanAnn.BitcoinSig1, err = lnwire.NewSigFromRawSignature(
|
||||||
|
chanProof.BitcoinSig1Bytes,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
chanAnn.BitcoinSig2, err = lnwire.NewSigFromRawSignature(
|
||||||
|
chanProof.BitcoinSig2Bytes,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
chanAnn.NodeSig1, err = lnwire.NewSigFromRawSignature(
|
||||||
|
chanProof.NodeSig1Bytes,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
chanAnn.NodeSig2, err = lnwire.NewSigFromRawSignature(
|
||||||
|
chanProof.NodeSig2Bytes,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// We'll unconditionally queue the channel's existence chanProof as it
|
||||||
|
// will need to be processed before either of the channel update
|
||||||
|
// networkMsgs.
|
||||||
|
|
||||||
|
// Since it's up to a node's policy as to whether they advertise the
|
||||||
|
// edge in a direction, we don't create an advertisement if the edge is
|
||||||
|
// nil.
|
||||||
|
var edge1Ann, edge2Ann *lnwire.ChannelUpdate
|
||||||
|
if e1 != nil {
|
||||||
|
edge1Ann, err = ChannelUpdateFromEdge(chanInfo, e1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if e2 != nil {
|
||||||
|
edge2Ann, err = ChannelUpdateFromEdge(chanInfo, e2)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return chanAnn, edge1Ann, edge2Ann, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user