34de5922ed
This commit adds height-based invoice expiry for hodl invoices that have active htlcs. This allows us to cancel our intentionally held htlcs before channels are force closed. We only add this for hodl invoices because we expect regular invoices to automatically be resolved. We still keep hodl invoices in the time-based expiry queue, because we want to expire open invoices that reach their timeout before any htlcs are added. Since htlcs are added after the invoice is created, we add new htlcs as they arrive in the invoice registry. In this commit, we allow adding of duplicate entries for an invoice to be added to the expiry queue as each htlc arrives to keep implementation simple. Our cancellation logic can already handle the case where an entry is already canceled, so this is ok.
13 lines
754 B
Go
13 lines
754 B
Go
package lncfg
|
|
|
|
// DefaultHoldInvoiceExpiryDelta defines the number of blocks before the expiry
|
|
// height of a hold invoice's htlc that lnd will automatically cancel the
|
|
// invoice to prevent the channel from force closing. This value *must* be
|
|
// greater than DefaultIncomingBroadcastDelta to prevent force closes.
|
|
const DefaultHoldInvoiceExpiryDelta = DefaultIncomingBroadcastDelta + 2
|
|
|
|
// Invoices holds the configuration options for invoices.
|
|
type Invoices struct {
|
|
HoldExpiryDelta uint32 `long:"holdexpirydelta" description:"The number of blocks before a hold invoice's htlc expires that the invoice should be canceled to prevent a force close. Force closes will not be prevented if this value is not greater than DefaultIncomingBroadcastDelta."`
|
|
}
|