rpcserver: populate the routing hints of an invoice when decoding it
This commit is contained in:
parent
6394c2fbb5
commit
1b137bf14c
38
rpcserver.go
38
rpcserver.go
@ -2282,6 +2282,9 @@ func createRPCInvoice(invoice *channeldb.Invoice) (*lnrpc.Invoice, error) {
|
|||||||
// The expiry will default to 9 blocks if not specified explicitly.
|
// The expiry will default to 9 blocks if not specified explicitly.
|
||||||
cltvExpiry := decoded.MinFinalCLTVExpiry()
|
cltvExpiry := decoded.MinFinalCLTVExpiry()
|
||||||
|
|
||||||
|
// Convert between the `lnrpc` and `routing` types.
|
||||||
|
routeHints := createRPCRouteHints(decoded.RouteHints)
|
||||||
|
|
||||||
preimage := invoice.Terms.PaymentPreimage
|
preimage := invoice.Terms.PaymentPreimage
|
||||||
satAmt := invoice.Terms.Value.ToSatoshis()
|
satAmt := invoice.Terms.Value.ToSatoshis()
|
||||||
|
|
||||||
@ -2299,9 +2302,40 @@ func createRPCInvoice(invoice *channeldb.Invoice) (*lnrpc.Invoice, error) {
|
|||||||
Expiry: expiry,
|
Expiry: expiry,
|
||||||
CltvExpiry: cltvExpiry,
|
CltvExpiry: cltvExpiry,
|
||||||
FallbackAddr: fallbackAddr,
|
FallbackAddr: fallbackAddr,
|
||||||
|
RouteHints: routeHints,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// createRPCRouteHints takes in the decoded form of an invoice's route hints
|
||||||
|
// and converts them into the lnrpc type.
|
||||||
|
func createRPCRouteHints(routeHints [][]routing.HopHint) []*lnrpc.RouteHint {
|
||||||
|
var res []*lnrpc.RouteHint
|
||||||
|
|
||||||
|
for _, route := range routeHints {
|
||||||
|
hopHints := make([]*lnrpc.HopHint, 0, len(route))
|
||||||
|
for _, hop := range route {
|
||||||
|
pubKey := hex.EncodeToString(
|
||||||
|
hop.NodeID.SerializeCompressed(),
|
||||||
|
)
|
||||||
|
|
||||||
|
hint := &lnrpc.HopHint{
|
||||||
|
NodeId: pubKey,
|
||||||
|
ChanId: hop.ChannelID,
|
||||||
|
FeeBaseMsat: hop.FeeBaseMSat,
|
||||||
|
FeeProportionalMillionths: hop.FeeProportionalMillionths,
|
||||||
|
CltvExpiryDelta: uint32(hop.CLTVExpiryDelta),
|
||||||
|
}
|
||||||
|
|
||||||
|
hopHints = append(hopHints, hint)
|
||||||
|
}
|
||||||
|
|
||||||
|
routeHint := &lnrpc.RouteHint{HopHints: hopHints}
|
||||||
|
res = append(res, routeHint)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
// LookupInvoice attempts to look up an invoice according to its payment hash.
|
// LookupInvoice attempts to look up an invoice according to its payment hash.
|
||||||
// The passed payment hash *must* be exactly 32 bytes, if not an error is
|
// The passed payment hash *must* be exactly 32 bytes, if not an error is
|
||||||
// returned.
|
// returned.
|
||||||
@ -3120,6 +3154,9 @@ func (r *rpcServer) DecodePayReq(ctx context.Context,
|
|||||||
// explicitly.
|
// explicitly.
|
||||||
expiry := int64(payReq.Expiry().Seconds())
|
expiry := int64(payReq.Expiry().Seconds())
|
||||||
|
|
||||||
|
// Convert between the `lnrpc` and `routing` types.
|
||||||
|
routeHints := createRPCRouteHints(payReq.RouteHints)
|
||||||
|
|
||||||
amt := int64(0)
|
amt := int64(0)
|
||||||
if payReq.MilliSat != nil {
|
if payReq.MilliSat != nil {
|
||||||
amt = int64(payReq.MilliSat.ToSatoshis())
|
amt = int64(payReq.MilliSat.ToSatoshis())
|
||||||
@ -3136,6 +3173,7 @@ func (r *rpcServer) DecodePayReq(ctx context.Context,
|
|||||||
FallbackAddr: fallbackAddr,
|
FallbackAddr: fallbackAddr,
|
||||||
Expiry: expiry,
|
Expiry: expiry,
|
||||||
CltvExpiry: int64(payReq.MinFinalCLTVExpiry()),
|
CltvExpiry: int64(payReq.MinFinalCLTVExpiry()),
|
||||||
|
RouteHints: routeHints,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user