mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-12-08 03:41:42 +01:00
routing: pass BlindedPaymentPathSet around everywhere
Building on from the previous commit, here we pass the PathSet around everywhere where we previously passed around the single BlindedPayment.
This commit is contained in:
@@ -477,10 +477,10 @@ type RouteRequest struct {
|
||||
// in blinded payment.
|
||||
FinalExpiry uint16
|
||||
|
||||
// BlindedPayment contains an optional blinded path and parameters
|
||||
// used to reach a target node via a blinded path. This field is
|
||||
// BlindedPathSet contains a set of optional blinded paths and
|
||||
// parameters used to reach a target node blinded paths. This field is
|
||||
// mutually exclusive with the Target field.
|
||||
BlindedPayment *BlindedPayment
|
||||
BlindedPathSet *BlindedPaymentPathSet
|
||||
}
|
||||
|
||||
// RouteHints is an alias type for a set of route hints, with the source node
|
||||
@@ -494,7 +494,7 @@ type RouteHints map[route.Vertex][]AdditionalEdge
|
||||
func NewRouteRequest(source route.Vertex, target *route.Vertex,
|
||||
amount lnwire.MilliSatoshi, timePref float64,
|
||||
restrictions *RestrictParams, customRecords record.CustomSet,
|
||||
routeHints RouteHints, blindedPayment *BlindedPayment,
|
||||
routeHints RouteHints, blindedPathSet *BlindedPaymentPathSet,
|
||||
finalExpiry uint16) (*RouteRequest, error) {
|
||||
|
||||
var (
|
||||
@@ -504,11 +504,8 @@ func NewRouteRequest(source route.Vertex, target *route.Vertex,
|
||||
err error
|
||||
)
|
||||
|
||||
if blindedPayment != nil {
|
||||
if err := blindedPayment.Validate(); err != nil {
|
||||
return nil, fmt.Errorf("invalid blinded payment: %w",
|
||||
err)
|
||||
}
|
||||
if blindedPathSet != nil {
|
||||
blindedPayment := blindedPathSet.GetPath()
|
||||
|
||||
introVertex := route.NewVertex(
|
||||
blindedPayment.BlindedPath.IntroductionPoint,
|
||||
@@ -539,13 +536,13 @@ func NewRouteRequest(source route.Vertex, target *route.Vertex,
|
||||
requestExpiry = blindedPayment.CltvExpiryDelta
|
||||
}
|
||||
|
||||
requestHints, err = blindedPayment.toRouteHints()
|
||||
requestHints, err = blindedPathSet.ToRouteHints()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
requestTarget, err := getTargetNode(target, blindedPayment)
|
||||
requestTarget, err := getTargetNode(target, blindedPathSet)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -559,15 +556,15 @@ func NewRouteRequest(source route.Vertex, target *route.Vertex,
|
||||
CustomRecords: customRecords,
|
||||
RouteHints: requestHints,
|
||||
FinalExpiry: requestExpiry,
|
||||
BlindedPayment: blindedPayment,
|
||||
BlindedPathSet: blindedPathSet,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func getTargetNode(target *route.Vertex, blindedPayment *BlindedPayment) (
|
||||
route.Vertex, error) {
|
||||
func getTargetNode(target *route.Vertex,
|
||||
blindedPathSet *BlindedPaymentPathSet) (route.Vertex, error) {
|
||||
|
||||
var (
|
||||
blinded = blindedPayment != nil
|
||||
blinded = blindedPathSet != nil
|
||||
targetSet = target != nil
|
||||
)
|
||||
|
||||
@@ -576,6 +573,8 @@ func getTargetNode(target *route.Vertex, blindedPayment *BlindedPayment) (
|
||||
return route.Vertex{}, ErrTargetAndBlinded
|
||||
|
||||
case blinded:
|
||||
blindedPayment := blindedPathSet.GetPath()
|
||||
|
||||
// If we're dealing with an edge-case blinded path that just
|
||||
// has an introduction node (first hop expected to be the intro
|
||||
// hop), then we return the unblinded introduction node as our
|
||||
@@ -597,16 +596,6 @@ func getTargetNode(target *route.Vertex, blindedPayment *BlindedPayment) (
|
||||
}
|
||||
}
|
||||
|
||||
// blindedPath returns the request's blinded path, which is set if the payment
|
||||
// is to a blinded route.
|
||||
func (r *RouteRequest) blindedPath() *sphinx.BlindedPath {
|
||||
if r.BlindedPayment == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return r.BlindedPayment.BlindedPath
|
||||
}
|
||||
|
||||
// FindRoute attempts to query the ChannelRouter for the optimum path to a
|
||||
// particular target destination to which it is able to send `amt` after
|
||||
// factoring in channel capacities and cumulative fees along the route.
|
||||
@@ -664,7 +653,7 @@ func (r *ChannelRouter) FindRoute(req *RouteRequest) (*route.Route, float64,
|
||||
totalAmt: req.Amount,
|
||||
cltvDelta: req.FinalExpiry,
|
||||
records: req.CustomRecords,
|
||||
}, req.blindedPath(),
|
||||
}, req.BlindedPathSet,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
@@ -926,14 +915,10 @@ type LightningPayment struct {
|
||||
// BlindedPayment field.
|
||||
RouteHints [][]zpay32.HopHint
|
||||
|
||||
// BlindedPayment holds the information about a blinded path to the
|
||||
// payment recipient. This is mutually exclusive to the RouteHints
|
||||
// BlindedPathSet holds the information about a set of blinded paths to
|
||||
// the payment recipient. This is mutually exclusive to the RouteHints
|
||||
// field.
|
||||
//
|
||||
// NOTE: a recipient may provide multiple blinded payment paths in the
|
||||
// same invoice. Currently, LND will only attempt to use the first one.
|
||||
// A future PR will handle multiple blinded payment paths.
|
||||
BlindedPayment *BlindedPayment
|
||||
BlindedPathSet *BlindedPaymentPathSet
|
||||
|
||||
// OutgoingChannelIDs is the list of channels that are allowed for the
|
||||
// first hop. If nil, any channel may be used.
|
||||
|
||||
Reference in New Issue
Block a user