routing: final changes to BlindedPaymentPathSet

Continue adding some complexity behind the BlindedPaymentPathSet. What
we do here is add a new IntroNodeOnlyPath method. The assumption we
make here is: If multiple blinded paths are provided to us in an invoice
but one of those paths only includes an intro node, then there is no
point in looking at any other path since we know that the intro node is
the destination node. So in such a case, we would have discarded any
other path in the `NewBlindedPaymentPathSet` constructor. So then we
would only have a single blinded path made up of an introduction node
only. In this specific case, in the `newRoute` function, no edge passed
to the function would have a blindedPayment associated with it (since
there are no blinded hops in this case). So we will have a case where
`blindedPathSet` passed to `newRoute` is not nil but `blindedPayment` is
nil since nonce was extacted from any edge. If this happens then we can
assume that this is the Intro-Node-Only situation described above. And
so we grabe the associated payment from the path set.
This commit is contained in:
Elle Mouton
2024-05-16 10:33:00 +02:00
parent daaa24b69c
commit e87110317b
4 changed files with 51 additions and 15 deletions

View File

@@ -309,7 +309,11 @@ func newRoute(sourceVertex route.Vertex,
// we can assume the relevant payment is the only one in the
// payment set.
if blindedPayment == nil {
blindedPayment = blindedPathSet.GetPath()
var err error
blindedPayment, err = blindedPathSet.IntroNodeOnlyPath()
if err != nil {
return nil, err
}
}
var (