diff --git a/cmd/lncli/cmd_pay.go b/cmd/lncli/cmd_pay.go index cb9d449aa..dcb7d96be 100644 --- a/cmd/lncli/cmd_pay.go +++ b/cmd/lncli/cmd_pay.go @@ -93,6 +93,12 @@ var ( Usage: "if set to true, then AMP will be used to complete the " + "payment", } + + ampReuseFlag = cli.BoolFlag{ + Name: "amp-reuse", + Usage: "if set to true, then a random payment address will " + + "be generated to enable re-use of an AMP invoice", + } ) // paymentFlags returns common flags for sendpayment and payinvoice. @@ -138,6 +144,7 @@ func paymentFlags() []cli.Flag { }, dataFlag, inflightUpdatesFlag, maxPartsFlag, jsonFlag, maxShardSizeSatFlag, maxShardSizeMsatFlag, ampFlag, + ampReuseFlag, } } @@ -243,6 +250,16 @@ func parsePayAddr(ctx *cli.Context) ([]byte, error) { switch { case ctx.IsSet("pay_addr"): payAddr, err = hex.DecodeString(ctx.String("pay_addr")) + + case ctx.IsSet(ampReuseFlag.Name): + var addrBytes [32]byte + if _, err := rand.Read(addrBytes[:]); err != nil { + return nil, fmt.Errorf("unable to generate pay "+ + "addr: %v", err) + } + + payAddr = addrBytes[:] + case ctx.Args().Present(): payAddr, err = hex.DecodeString(ctx.Args().First()) }