From f6ab1390eda18bf07aa0437877e93e447ec8ffad Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Mon, 13 Mar 2017 20:32:59 -0700 Subject: [PATCH] routing: include the channel point of chan within edge update ntfn This commit modifies the `ChannelEdgeUpdate` struct to include the channel point itself within the notifications. Such a change improves the notificaiton experience for callers as it allows them to filter out update notifications based on a familiar object within the codebase: a channel point. --- routing/notifications.go | 9 ++++++++- routing/notifications_test.go | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/routing/notifications.go b/routing/notifications.go index 31cce8e3..04c6b79f 100644 --- a/routing/notifications.go +++ b/routing/notifications.go @@ -18,8 +18,10 @@ import ( // TopologyChanges channel will be sent upon with new updates to the channel // graph in real-time as they're encountered. type TopologyClient struct { - // TopologyChanges is a recieve only channel that new channel graph + // TopologyChanges is a receive only channel that new channel graph // updates will be sent over. + // + // TODO(roasbeef): chan for each update type instead? TopologyChanges <-chan *TopologyChange // Cancel is a function closure that should be executed when the client @@ -225,6 +227,10 @@ type ChannelEdgeUpdate struct { // originally confirmed. ChanID uint64 + // ChanPoint is the outpoint which represents the multi-sig funding + // output for the channel. + ChanPoint wire.OutPoint + // Capacity is the capacity of the newly created channel. Capacity btcutil.Amount @@ -300,6 +306,7 @@ func addToTopologyChange(graph *channeldb.ChannelGraph, update *TopologyChange, edgeUpdate := &ChannelEdgeUpdate{ ChanID: chanID, + ChanPoint: edgeInfo.ChannelPoint, TimeLockDelta: m.TimeLockDelta, Capacity: edgeInfo.Capacity, MinHTLC: btcutil.Amount(m.HtlcMinimumMsat), diff --git a/routing/notifications_test.go b/routing/notifications_test.go index 405b348f..0cb47536 100644 --- a/routing/notifications_test.go +++ b/routing/notifications_test.go @@ -340,7 +340,7 @@ func TestEdgeUpdateNotification(t *testing.T) { // First we'll create the utxo for the channel to be "closed" const chanValue = btcutil.Amount(10000) - fundingTx, _, chanID := randChannelEdge(ctx, chanValue, + fundingTx, chanPoint, chanID := randChannelEdge(ctx, chanValue, startingBlockHeight) // We'll also add a record for the block that included our funding @@ -404,6 +404,10 @@ func TestEdgeUpdateNotification(t *testing.T) { t.Fatalf("channel ID of edge doesn't match: "+ "expected %v, got %v", chanID.ToUint64(), edgeUpdate.ChanID) } + if edgeUpdate.ChanPoint != chanPoint { + t.Fatalf("channel don't match: expected %v, got %v", + chanPoint, edgeUpdate.ChanPoint) + } // TODO(roasbeef): this is a hack, needs to be removed // after commitment fees are dynamic. if edgeUpdate.Capacity != chanValue-5000 {