diff --git a/lnrpc/routerrpc/router_backend.go b/lnrpc/routerrpc/router_backend.go index f6a70eba..49d60ad0 100644 --- a/lnrpc/routerrpc/router_backend.go +++ b/lnrpc/routerrpc/router_backend.go @@ -702,9 +702,31 @@ func (r *RouterBackend) extractIntentFromSendRequest( payIntent.MaxParts = 1 } - err = payIntent.SetPaymentHash(*payReq.PaymentHash) - if err != nil { - return nil, err + if payReq.Features.HasFeature(lnwire.AMPOptional) { + // Generate random SetID and root share. + var setID [32]byte + _, err = rand.Read(setID[:]) + if err != nil { + return nil, err + } + + var rootShare [32]byte + _, err = rand.Read(rootShare[:]) + if err != nil { + return nil, err + } + err := payIntent.SetAMP(&routing.AMPOptions{ + SetID: setID, + RootShare: rootShare, + }) + if err != nil { + return nil, err + } + } else { + err = payIntent.SetPaymentHash(*payReq.PaymentHash) + if err != nil { + return nil, err + } } destKey := payReq.Destination.SerializeCompressed()