On March 15th, 2019 hodl invoices where added to lnd via this pull request. Hodl invoices allow a recipient to accept or deny a transaction at their discretion, a very useful feature. However, how does this feature actually work? Are funds locked up until the htlc is settled? Are they not reserved, therefore the longer a hodl invoice is left idle the higher likelihood the transaction may ultimately fail?
1 Answer
Generally when paying an invoice a chain of htlcs from the sender via some path on the network to the recipient is set up. The htlcs lock in by exchanging signatures on every local channel. Now there is a min timelock which is the amount of time the payment can take. Or the time frame in which the htlcs must settle by releasing a preimage to have a successful payment.
The general workflow is that the recipient is supposed to release the preimage once the htlc on their channel is set up and the amount is equal or bigger the one requested in the invoice.
With the HODL invoice as described in the pullrequest the recipient decides not release the preimage automatically. Therfore the settlement of htlcs is deferred into the future (or the timelock cancels the payment process)