064e8492de
This commit is the final step in making the link unaware of invoices. It now purely offers the htlc to the invoice registry and follows instructions from the invoice registry about how and when to respond to the htlc. The change also fixes a bug where upon restart, hodl htlcs were subjected to the invoice minimum cltv delta requirement again. If the block height has increased in the mean while, the htlc would be canceled back. Furthermore the invoice registry interaction is aligned between link and contract resolvers.
30 lines
1.2 KiB
Go
30 lines
1.2 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
)
|
|
|
|
// Registry is an interface which represents the invoice registry.
|
|
type Registry interface {
|
|
// LookupInvoice attempts to look up an invoice according to its 32
|
|
// byte payment hash. This method should also reutrn the min final CLTV
|
|
// delta for this invoice. We'll use this to ensure that the HTLC
|
|
// extended to us gives us enough time to settle as we prescribe.
|
|
LookupInvoice(lntypes.Hash) (channeldb.Invoice, uint32, error)
|
|
|
|
// NotifyExitHopHtlc attempts to mark an invoice as settled. If the
|
|
// invoice is a debug invoice, then this method is a noop as debug
|
|
// invoices are never fully settled. The return value describes how the
|
|
// htlc should be resolved. If the htlc cannot be resolved immediately,
|
|
// the resolution is sent on the passed in hodlChan later.
|
|
NotifyExitHopHtlc(payHash lntypes.Hash, paidAmount lnwire.MilliSatoshi,
|
|
expiry uint32, currentHeight int32,
|
|
hodlChan chan<- interface{}) (*invoices.HodlEvent, error)
|
|
|
|
// HodlUnsubscribeAll unsubscribes from all hodl events.
|
|
HodlUnsubscribeAll(subscriber chan<- interface{})
|
|
}
|