mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-02 03:01:32 +02:00
funding: rename from router graph to graph
This commit is contained in:
parent
9327a83cd2
commit
743502f99d
@ -629,11 +629,11 @@ const (
|
|||||||
// but we still haven't announced the channel to the network.
|
// but we still haven't announced the channel to the network.
|
||||||
channelReadySent
|
channelReadySent
|
||||||
|
|
||||||
// addedToRouterGraph is the opening state of a channel if the
|
// addedToGraph is the opening state of a channel if the channel has
|
||||||
// channel has been successfully added to the router graph
|
// been successfully added to the graph immediately after the
|
||||||
// immediately after the channelReady message has been sent, but
|
// channelReady message has been sent, but we still haven't announced
|
||||||
// we still haven't announced the channel to the network.
|
// the channel to the network.
|
||||||
addedToRouterGraph
|
addedToGraph
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c channelOpeningState) String() string {
|
func (c channelOpeningState) String() string {
|
||||||
@ -642,8 +642,8 @@ func (c channelOpeningState) String() string {
|
|||||||
return "markedOpen"
|
return "markedOpen"
|
||||||
case channelReadySent:
|
case channelReadySent:
|
||||||
return "channelReadySent"
|
return "channelReadySent"
|
||||||
case addedToRouterGraph:
|
case addedToGraph:
|
||||||
return "addedToRouterGraph"
|
return "addedToGraph"
|
||||||
default:
|
default:
|
||||||
return "unknown"
|
return "unknown"
|
||||||
}
|
}
|
||||||
@ -1039,9 +1039,9 @@ func (f *Manager) reservationCoordinator() {
|
|||||||
// advanceFundingState will advance the channel through the steps after the
|
// advanceFundingState will advance the channel through the steps after the
|
||||||
// funding transaction is broadcasted, up until the point where the channel is
|
// funding transaction is broadcasted, up until the point where the channel is
|
||||||
// ready for operation. This includes waiting for the funding transaction to
|
// ready for operation. This includes waiting for the funding transaction to
|
||||||
// confirm, sending channel_ready to the peer, adding the channel to the
|
// confirm, sending channel_ready to the peer, adding the channel to the graph,
|
||||||
// router graph, and announcing the channel. The updateChan can be set non-nil
|
// and announcing the channel. The updateChan can be set non-nil to get
|
||||||
// to get OpenStatusUpdates.
|
// OpenStatusUpdates.
|
||||||
//
|
//
|
||||||
// NOTE: This MUST be run as a goroutine.
|
// NOTE: This MUST be run as a goroutine.
|
||||||
func (f *Manager) advanceFundingState(channel *channeldb.OpenChannel,
|
func (f *Manager) advanceFundingState(channel *channeldb.OpenChannel,
|
||||||
@ -1152,7 +1152,7 @@ func (f *Manager) stateStep(channel *channeldb.OpenChannel,
|
|||||||
return nil
|
return nil
|
||||||
|
|
||||||
// channelReady was sent to peer, but the channel was not added to the
|
// channelReady was sent to peer, but the channel was not added to the
|
||||||
// router graph and the channel announcement was not sent.
|
// graph and the channel announcement was not sent.
|
||||||
case channelReadySent:
|
case channelReadySent:
|
||||||
// We must wait until we've received the peer's channel_ready
|
// We must wait until we've received the peer's channel_ready
|
||||||
// before sending a channel_update according to BOLT#07.
|
// before sending a channel_update according to BOLT#07.
|
||||||
@ -1183,7 +1183,7 @@ func (f *Manager) stateStep(channel *channeldb.OpenChannel,
|
|||||||
|
|
||||||
// The channel was added to the Router's topology, but the channel
|
// The channel was added to the Router's topology, but the channel
|
||||||
// announcement was not sent.
|
// announcement was not sent.
|
||||||
case addedToRouterGraph:
|
case addedToGraph:
|
||||||
if channel.IsZeroConf() {
|
if channel.IsZeroConf() {
|
||||||
// If this is a zero-conf channel, then we will wait
|
// If this is a zero-conf channel, then we will wait
|
||||||
// for it to be confirmed before announcing it to the
|
// for it to be confirmed before announcing it to the
|
||||||
@ -3377,15 +3377,15 @@ func (f *Manager) extractAnnounceParams(c *channeldb.OpenChannel) (
|
|||||||
return fwdMinHTLC, fwdMaxHTLC
|
return fwdMinHTLC, fwdMaxHTLC
|
||||||
}
|
}
|
||||||
|
|
||||||
// addToRouterGraph sends a ChannelAnnouncement and a ChannelUpdate to the
|
// addToGraph sends a ChannelAnnouncement and a ChannelUpdate to the
|
||||||
// gossiper so that the channel is added to the Router's internal graph.
|
// gossiper so that the channel is added to the graph builder's internal graph.
|
||||||
// These announcement messages are NOT broadcasted to the greater network,
|
// These announcement messages are NOT broadcasted to the greater network,
|
||||||
// only to the channel counter party. The proofs required to announce the
|
// only to the channel counter party. The proofs required to announce the
|
||||||
// channel to the greater network will be created and sent in annAfterSixConfs.
|
// channel to the greater network will be created and sent in annAfterSixConfs.
|
||||||
// The peerAlias is used for zero-conf channels to give the counter-party a
|
// The peerAlias is used for zero-conf channels to give the counter-party a
|
||||||
// ChannelUpdate they understand. ourPolicy may be set for various
|
// ChannelUpdate they understand. ourPolicy may be set for various
|
||||||
// option-scid-alias channels to re-use the same policy.
|
// option-scid-alias channels to re-use the same policy.
|
||||||
func (f *Manager) addToRouterGraph(completeChan *channeldb.OpenChannel,
|
func (f *Manager) addToGraph(completeChan *channeldb.OpenChannel,
|
||||||
shortChanID *lnwire.ShortChannelID,
|
shortChanID *lnwire.ShortChannelID,
|
||||||
peerAlias *lnwire.ShortChannelID,
|
peerAlias *lnwire.ShortChannelID,
|
||||||
ourPolicy *models.ChannelEdgePolicy) error {
|
ourPolicy *models.ChannelEdgePolicy) error {
|
||||||
@ -3454,8 +3454,8 @@ func (f *Manager) addToRouterGraph(completeChan *channeldb.OpenChannel,
|
|||||||
|
|
||||||
// annAfterSixConfs broadcasts the necessary channel announcement messages to
|
// annAfterSixConfs broadcasts the necessary channel announcement messages to
|
||||||
// the network after 6 confs. Should be called after the channelReady message
|
// the network after 6 confs. Should be called after the channelReady message
|
||||||
// is sent and the channel is added to the router graph (channelState is
|
// is sent and the channel is added to the graph (channelState is
|
||||||
// 'addedToRouterGraph') and the channel is ready to be used. This is the last
|
// 'addedToGraph') and the channel is ready to be used. This is the last
|
||||||
// step in the channel opening process, and the opening state will be deleted
|
// step in the channel opening process, and the opening state will be deleted
|
||||||
// from the database if successful.
|
// from the database if successful.
|
||||||
func (f *Manager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
|
func (f *Manager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
|
||||||
@ -3566,7 +3566,7 @@ func (f *Manager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We'll delete the edge and add it again via
|
// We'll delete the edge and add it again via
|
||||||
// addToRouterGraph. This is because the peer may have
|
// addToGraph. This is because the peer may have
|
||||||
// sent us a ChannelUpdate with an alias and we don't
|
// sent us a ChannelUpdate with an alias and we don't
|
||||||
// want to relay this.
|
// want to relay this.
|
||||||
ourPolicy, err := f.cfg.DeleteAliasEdge(baseScid)
|
ourPolicy, err := f.cfg.DeleteAliasEdge(baseScid)
|
||||||
@ -3576,12 +3576,12 @@ func (f *Manager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
|
|||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = f.addToRouterGraph(
|
err = f.addToGraph(
|
||||||
completeChan, &baseScid, nil, ourPolicy,
|
completeChan, &baseScid, nil, ourPolicy,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to re-add to "+
|
return fmt.Errorf("failed to re-add to "+
|
||||||
"router graph: %v", err)
|
"graph: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3605,9 +3605,9 @@ func (f *Manager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// waitForZeroConfChannel is called when the state is addedToRouterGraph with
|
// waitForZeroConfChannel is called when the state is addedToGraph with
|
||||||
// a zero-conf channel. This will wait for the real confirmation, add the
|
// a zero-conf channel. This will wait for the real confirmation, add the
|
||||||
// confirmed SCID to the router graph, and then announce after six confs.
|
// confirmed SCID to the graph, and then announce after six confs.
|
||||||
func (f *Manager) waitForZeroConfChannel(c *channeldb.OpenChannel) error {
|
func (f *Manager) waitForZeroConfChannel(c *channeldb.OpenChannel) error {
|
||||||
// First we'll check whether the channel is confirmed on-chain. If it
|
// First we'll check whether the channel is confirmed on-chain. If it
|
||||||
// is already confirmed, the chainntnfs subsystem will return with the
|
// is already confirmed, the chainntnfs subsystem will return with the
|
||||||
@ -3662,15 +3662,15 @@ func (f *Manager) waitForZeroConfChannel(c *channeldb.OpenChannel) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We'll need to update the graph with the new ShortChannelID
|
// We'll need to update the graph with the new ShortChannelID
|
||||||
// via an addToRouterGraph call. We don't pass in the peer's
|
// via an addToGraph call. We don't pass in the peer's
|
||||||
// alias since we'll be using the confirmed SCID from now on
|
// alias since we'll be using the confirmed SCID from now on
|
||||||
// regardless if it's public or not.
|
// regardless if it's public or not.
|
||||||
err = f.addToRouterGraph(
|
err = f.addToGraph(
|
||||||
c, &confChan.shortChanID, nil, ourPolicy,
|
c, &confChan.shortChanID, nil, ourPolicy,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed adding confirmed zero-conf "+
|
return fmt.Errorf("failed adding confirmed zero-conf "+
|
||||||
"SCID to router graph: %v", err)
|
"SCID to graph: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3972,7 +3972,7 @@ func (f *Manager) handleChannelReady(peer lnpeer.Peer, //nolint:funlen
|
|||||||
// handleChannelReadyReceived is called once the remote's channelReady message
|
// handleChannelReadyReceived is called once the remote's channelReady message
|
||||||
// is received and processed. At this stage, we must have sent out our
|
// is received and processed. At this stage, we must have sent out our
|
||||||
// channelReady message, once the remote's channelReady is processed, the
|
// channelReady message, once the remote's channelReady is processed, the
|
||||||
// channel is now active, thus we change its state to `addedToRouterGraph` to
|
// channel is now active, thus we change its state to `addedToGraph` to
|
||||||
// let the channel start handling routing.
|
// let the channel start handling routing.
|
||||||
func (f *Manager) handleChannelReadyReceived(channel *channeldb.OpenChannel,
|
func (f *Manager) handleChannelReadyReceived(channel *channeldb.OpenChannel,
|
||||||
scid *lnwire.ShortChannelID, pendingChanID [32]byte,
|
scid *lnwire.ShortChannelID, pendingChanID [32]byte,
|
||||||
@ -4004,9 +4004,9 @@ func (f *Manager) handleChannelReadyReceived(channel *channeldb.OpenChannel,
|
|||||||
peerAlias = &foundAlias
|
peerAlias = &foundAlias
|
||||||
}
|
}
|
||||||
|
|
||||||
err := f.addToRouterGraph(channel, scid, peerAlias, nil)
|
err := f.addToGraph(channel, scid, peerAlias, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed adding to router graph: %w", err)
|
return fmt.Errorf("failed adding to graph: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// As the channel is now added to the ChannelRouter's topology, the
|
// As the channel is now added to the ChannelRouter's topology, the
|
||||||
@ -4014,15 +4014,15 @@ func (f *Manager) handleChannelReadyReceived(channel *channeldb.OpenChannel,
|
|||||||
// moved to the last state (actually deleted from the database) after
|
// moved to the last state (actually deleted from the database) after
|
||||||
// the channel is finally announced.
|
// the channel is finally announced.
|
||||||
err = f.saveChannelOpeningState(
|
err = f.saveChannelOpeningState(
|
||||||
&channel.FundingOutpoint, addedToRouterGraph, scid,
|
&channel.FundingOutpoint, addedToGraph, scid,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error setting channel state to"+
|
return fmt.Errorf("error setting channel state to"+
|
||||||
" addedToRouterGraph: %w", err)
|
" addedToGraph: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debugf("Channel(%v) with ShortChanID %v: successfully "+
|
log.Debugf("Channel(%v) with ShortChanID %v: successfully "+
|
||||||
"added to router graph", chanID, scid)
|
"added to graph", chanID, scid)
|
||||||
|
|
||||||
// Give the caller a final update notifying them that the channel is
|
// Give the caller a final update notifying them that the channel is
|
||||||
fundingPoint := channel.FundingOutpoint
|
fundingPoint := channel.FundingOutpoint
|
||||||
@ -4347,7 +4347,7 @@ func (f *Manager) announceChannel(localIDKey, remoteIDKey *btcec.PublicKey,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We only send the channel proof announcement and the node announcement
|
// We only send the channel proof announcement and the node announcement
|
||||||
// because addToRouterGraph previously sent the ChannelAnnouncement and
|
// because addToGraph previously sent the ChannelAnnouncement and
|
||||||
// the ChannelUpdate announcement messages. The channel proof and node
|
// the ChannelUpdate announcement messages. The channel proof and node
|
||||||
// announcements are broadcast to the greater network.
|
// announcements are broadcast to the greater network.
|
||||||
errChan := f.cfg.SendAnnouncement(ann.chanProof)
|
errChan := f.cfg.SendAnnouncement(ann.chanProof)
|
||||||
|
@ -1140,13 +1140,13 @@ func assertChannelReadySent(t *testing.T, alice, bob *testNode,
|
|||||||
assertDatabaseState(t, bob, fundingOutPoint, channelReadySent)
|
assertDatabaseState(t, bob, fundingOutPoint, channelReadySent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertAddedToRouterGraph(t *testing.T, alice, bob *testNode,
|
func assertAddedToGraph(t *testing.T, alice, bob *testNode,
|
||||||
fundingOutPoint *wire.OutPoint) {
|
fundingOutPoint *wire.OutPoint) {
|
||||||
|
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
assertDatabaseState(t, alice, fundingOutPoint, addedToRouterGraph)
|
assertDatabaseState(t, alice, fundingOutPoint, addedToGraph)
|
||||||
assertDatabaseState(t, bob, fundingOutPoint, addedToRouterGraph)
|
assertDatabaseState(t, bob, fundingOutPoint, addedToGraph)
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertChannelAnnouncements checks that alice and bob both sends the expected
|
// assertChannelAnnouncements checks that alice and bob both sends the expected
|
||||||
@ -1523,7 +1523,7 @@ func testNormalWorkflow(t *testing.T, chanType *lnwire.ChannelType) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// The funding transaction is now confirmed, wait for the
|
// The funding transaction is now confirmed, wait for the
|
||||||
// OpenStatusUpdate_ChanOpen update
|
// OpenStatusUpdate_ChanOpen update
|
||||||
@ -1877,7 +1877,7 @@ func TestFundingManagerRestartBehavior(t *testing.T) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// Next, we check that Alice sends the announcement signatures
|
// Next, we check that Alice sends the announcement signatures
|
||||||
// on restart after six confirmations. Bob should as expected send
|
// on restart after six confirmations. Bob should as expected send
|
||||||
@ -2042,7 +2042,7 @@ func TestFundingManagerOfflinePeer(t *testing.T) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// The funding transaction is now confirmed, wait for the
|
// The funding transaction is now confirmed, wait for the
|
||||||
// OpenStatusUpdate_ChanOpen update
|
// OpenStatusUpdate_ChanOpen update
|
||||||
@ -2501,7 +2501,7 @@ func TestFundingManagerReceiveChannelReadyTwice(t *testing.T) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// The funding transaction is now confirmed, wait for the
|
// The funding transaction is now confirmed, wait for the
|
||||||
// OpenStatusUpdate_ChanOpen update
|
// OpenStatusUpdate_ChanOpen update
|
||||||
@ -2594,7 +2594,7 @@ func TestFundingManagerRestartAfterChanAnn(t *testing.T) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// The funding transaction is now confirmed, wait for the
|
// The funding transaction is now confirmed, wait for the
|
||||||
// OpenStatusUpdate_ChanOpen update
|
// OpenStatusUpdate_ChanOpen update
|
||||||
@ -2698,7 +2698,7 @@ func TestFundingManagerRestartAfterReceivingChannelReady(t *testing.T) {
|
|||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Check that the state machine is updated accordingly
|
// Check that the state machine is updated accordingly
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOutPoint)
|
assertAddedToGraph(t, alice, bob, fundingOutPoint)
|
||||||
|
|
||||||
// Notify that six confirmations has been reached on funding
|
// Notify that six confirmations has been reached on funding
|
||||||
// transaction.
|
// transaction.
|
||||||
@ -2912,9 +2912,9 @@ func TestFundingManagerPrivateRestart(t *testing.T) {
|
|||||||
// announcements.
|
// announcements.
|
||||||
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
assertChannelAnnouncements(t, alice, bob, capacity, nil, nil, nil, nil)
|
||||||
|
|
||||||
// Note: We don't check for the addedToRouterGraph state because in
|
// Note: We don't check for the addedToGraph state because in
|
||||||
// the private channel mode, the state is quickly changed from
|
// the private channel mode, the state is quickly changed from
|
||||||
// addedToRouterGraph to deleted from the database since the public
|
// addedToGraph to deleted from the database since the public
|
||||||
// announcement phase is skipped.
|
// announcement phase is skipped.
|
||||||
|
|
||||||
// The funding transaction is now confirmed, wait for the
|
// The funding transaction is now confirmed, wait for the
|
||||||
@ -4563,8 +4563,8 @@ func testZeroConf(t *testing.T, chanType *lnwire.ChannelType) {
|
|||||||
// We'll now wait for the OpenStatusUpdate_ChanOpen update.
|
// We'll now wait for the OpenStatusUpdate_ChanOpen update.
|
||||||
waitForOpenUpdate(t, updateChan)
|
waitForOpenUpdate(t, updateChan)
|
||||||
|
|
||||||
// Assert that both Alice & Bob are in the addedToRouterGraph state.
|
// Assert that both Alice & Bob are in the addedToGraph state.
|
||||||
assertAddedToRouterGraph(t, alice, bob, fundingOp)
|
assertAddedToGraph(t, alice, bob, fundingOp)
|
||||||
|
|
||||||
// We'll now restart Alice's funding manager and assert that the tx
|
// We'll now restart Alice's funding manager and assert that the tx
|
||||||
// is rebroadcast.
|
// is rebroadcast.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user