feat: add minCltvExpiryDelta for LDK

This commit is contained in:
anon 2026-03-26 20:02:48 +01:00
parent 7543313d60
commit 350b72c297
3 changed files with 23 additions and 6 deletions

2
go.mod
View file

@ -7,7 +7,7 @@ require (
github.com/btcsuite/btcd v0.24.3-0.20250318170759-4f4ea81776d6
github.com/btcsuite/btcd/btcutil v1.1.6
github.com/elnosh/gonuts v0.4.2
github.com/getAlby/ldk-node-go v0.0.0-20260210094439-f4fc56578330
github.com/getAlby/ldk-node-go v0.0.0-20260325180303-fbe7fe6a114d
github.com/go-gormigrate/gormigrate/v2 v2.1.5
github.com/labstack/echo/v4 v4.15.1
github.com/mattn/go-sqlite3 v1.14.34

2
go.sum
View file

@ -185,6 +185,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/getAlby/ldk-node-go v0.0.0-20260210094439-f4fc56578330 h1:JxzUYE5wn4MA0fF08jra+/hcZ+1uvVvy9luiXimd/tA=
github.com/getAlby/ldk-node-go v0.0.0-20260210094439-f4fc56578330/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg=
github.com/getAlby/ldk-node-go v0.0.0-20260325180303-fbe7fe6a114d h1:u7m25pstQSZiDIViKGrIpxnQBu01asJIl25EbzljVtE=
github.com/getAlby/ldk-node-go v0.0.0-20260325180303-fbe7fe6a114d/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-gormigrate/gormigrate/v2 v2.1.5 h1:1OyorA5LtdQw12cyJDEHuTrEV3GiXiIhS4/QTTa/SM8=
github.com/go-gormigrate/gormigrate/v2 v2.1.5/go.mod h1:mj9ekk/7CPF3VjopaFvWKN2v7fN3D9d3eEOAXRhi/+M=

View file

@ -2283,7 +2283,6 @@ func (ls *LDKService) ExecuteCustomNodeCommand(ctx context.Context, command *lnc
}
func (ls *LDKService) MakeHoldInvoice(ctx context.Context, amount int64, description string, descriptionHash string, expiry int64, paymentHash string, minCltvExpiryDelta *uint64) (*lnclient.Transaction, error) {
// TODO: Support minCltvExpiryDelta
if time.Duration(expiry)*time.Second > maxInvoiceExpiry {
return nil, errors.New("expiry is too long")
}
@ -2326,10 +2325,26 @@ func (ls *LDKService) MakeHoldInvoice(ctx context.Context, amount int64, descrip
ldkPaymentHash := ldk_node.PaymentHash(hex.EncodeToString(paymentHash32[:]))
invoiceObj, err := ls.node.Bolt11Payment().ReceiveForHash(uint64(amount),
descriptionType,
uint32(expiry),
ldkPaymentHash)
var invoiceObj *ldk_node.Bolt11Invoice
if minCltvExpiryDelta != nil {
if *minCltvExpiryDelta > uint64(^uint16(0)) {
return nil, errors.New("min_cltv_expiry_delta must be <= 65535")
}
invoiceObj, err = ls.node.Bolt11Payment().ReceiveForHashWithMinCltvExpiryDelta(
uint64(amount),
descriptionType,
uint32(expiry),
ldkPaymentHash,
uint16(*minCltvExpiryDelta),
)
} else {
invoiceObj, err = ls.node.Bolt11Payment().ReceiveForHash(
uint64(amount),
descriptionType,
uint32(expiry),
ldkPaymentHash,
)
}
if err != nil {
logger.Logger.WithError(err).Error("MakeHoldInvoice failed")