cmd/lncli: add new option for easy AMP invoice re-use

In this commit, we add a new option (`--amp-reuse`) that allows for easy
AMP invoice re-use when using either the `sendpayment` command.
This commit is contained in:
Olaoluwa Osuntokun 2021-08-04 18:54:42 -07:00
parent 6e3b33629c
commit c235b46e66
No known key found for this signature in database
GPG Key ID: 3BBD59E99B280306

View File

@ -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())
}