106 lines
3.4 KiB
Go
106 lines
3.4 KiB
Go
|
package channeldb
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/btcsuite/btcd/btcec"
|
||
|
"github.com/lightningnetwork/lnd/lntypes"
|
||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||
|
"github.com/lightningnetwork/lnd/routing/route"
|
||
|
)
|
||
|
|
||
|
// MPPaymentCreationInfo is the information necessary to have ready when
|
||
|
// initiating a payment, moving it into state InFlight.
|
||
|
type MPPaymentCreationInfo struct {
|
||
|
// PaymentHash is the hash this payment is paying to.
|
||
|
PaymentHash lntypes.Hash
|
||
|
|
||
|
// Value is the amount we are paying.
|
||
|
Value lnwire.MilliSatoshi
|
||
|
|
||
|
// CreatingTime is the time at which this payment was started.
|
||
|
CreationTime time.Time
|
||
|
|
||
|
// PaymentRequest is the full payment request, if any.
|
||
|
PaymentRequest []byte
|
||
|
}
|
||
|
|
||
|
// HTLCAttempt contains information about a specific HTLC attempt for a given
|
||
|
// payment. This information is used by the router to handle any errors coming
|
||
|
// back after an attempt is made, and to query the switch about the status of a
|
||
|
// payment. For settled payment this will be the information for the succeeding
|
||
|
// payment attempt.
|
||
|
type HTLCAttempt struct {
|
||
|
// PaymentID is the unique ID used for this attempt.
|
||
|
PaymentID uint64
|
||
|
|
||
|
// SessionKey is the ephemeral key used for this payment attempt.
|
||
|
SessionKey *btcec.PrivateKey
|
||
|
|
||
|
// Route is the route attempted to send the HTLC.
|
||
|
Route route.Route
|
||
|
|
||
|
// AttemptTime is the time at which this HTLC was attempted.
|
||
|
AttemptTime time.Time
|
||
|
|
||
|
// Settle is the preimage of a successful payment. This serves as a
|
||
|
// proof of payment. It will only be non-nil for settled payments.
|
||
|
//
|
||
|
// NOTE: Can be nil if payment is not settled.
|
||
|
Settle *HTLCSettleInfo
|
||
|
|
||
|
// Fail is a failure reason code indicating the reason the payment
|
||
|
// failed. It is only non-nil for failed payments.
|
||
|
//
|
||
|
// NOTE: Can be nil if payment is not failed.
|
||
|
Failure *HTLCFailInfo
|
||
|
}
|
||
|
|
||
|
// HTLCSettleInfo encapsulates the information that augments an HTLCAttempt in
|
||
|
// the event that the HTLC is successful.
|
||
|
type HTLCSettleInfo struct {
|
||
|
// Preimage is the preimage of a successful HTLC. This serves as a proof
|
||
|
// of payment.
|
||
|
Preimage lntypes.Preimage
|
||
|
|
||
|
// SettleTime is the time at which this HTLC was settled.
|
||
|
SettleTime time.Time
|
||
|
}
|
||
|
|
||
|
// HTLCFailInfo encapsulates the information that augments an HTLCAttempt in the
|
||
|
// event that the HTLC fails.
|
||
|
type HTLCFailInfo struct {
|
||
|
// FailTime is the time at which this HTLC was failed.
|
||
|
FailTime time.Time
|
||
|
}
|
||
|
|
||
|
// MPPayment is a wrapper around a payment's MPPaymentCreationInfo and
|
||
|
// HTLCAttempts. All payments will have the MPPPaymentCreationInfo set, any
|
||
|
// HTLCs made in attempts to be completed will populated in the HTLCs slice.
|
||
|
// Each populated HTLCAttempt represents an attempted HTLC, each of which may
|
||
|
// have the associated Settle or Fail struct populated if the HTLC is no longer
|
||
|
// in-flight.
|
||
|
type MPPayment struct {
|
||
|
// sequenceNum is a unique identifier used to sort the payments in
|
||
|
// order of creation.
|
||
|
sequenceNum uint64
|
||
|
|
||
|
// Info holds all static information about this payment, and is
|
||
|
// populated when the payment is initiated.
|
||
|
Info *MPPaymentCreationInfo
|
||
|
|
||
|
// HTLCs holds the information about individual HTLCs that we send in
|
||
|
// order to make the payment.
|
||
|
HTLCs []HTLCAttempt
|
||
|
|
||
|
// FailureReason is the failure reason code indicating the reason the
|
||
|
// payment failed.
|
||
|
//
|
||
|
// NOTE: Will only be set once the daemon has given up on the payment
|
||
|
// altogether.
|
||
|
FailureReason *FailureReason
|
||
|
|
||
|
// Status is the current PaymentStatus of this payment.
|
||
|
Status PaymentStatus
|
||
|
}
|