mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-23 14:40:30 +01:00
90 lines
2.7 KiB
Go
90 lines
2.7 KiB
Go
|
package lnwallet
|
||
|
|
||
|
import (
|
||
|
"github.com/btcsuite/btcd/btcutil"
|
||
|
"github.com/btcsuite/btcd/wire"
|
||
|
"github.com/lightningnetwork/lnd/fn"
|
||
|
"github.com/lightningnetwork/lnd/input"
|
||
|
"github.com/lightningnetwork/lnd/lnwire"
|
||
|
"github.com/lightningnetwork/lnd/tlv"
|
||
|
)
|
||
|
|
||
|
// CloseType is an enum that represents the type of close that we are trying to
|
||
|
// resolve.
|
||
|
type CloseType uint8
|
||
|
|
||
|
const (
|
||
|
// LocalForceClose represents a local force close.
|
||
|
LocalForceClose CloseType = iota
|
||
|
|
||
|
// RemoteForceClose represents a remote force close.
|
||
|
RemoteForceClose
|
||
|
|
||
|
// Breach represents a breach by the remote party.
|
||
|
Breach
|
||
|
)
|
||
|
|
||
|
// ResolutionReq is used to ask an outside sub-system for additional
|
||
|
// information needed to resolve a contract.
|
||
|
type ResolutionReq struct {
|
||
|
// ChanPoint is the channel point of the channel that we are trying to
|
||
|
// resolve.
|
||
|
ChanPoint wire.OutPoint
|
||
|
|
||
|
// ShortChanID is the short channel ID of the channel that we are
|
||
|
// trying to resolve.
|
||
|
ShortChanID lnwire.ShortChannelID
|
||
|
|
||
|
// Initiator is a bool if we're the initiator of the channel.
|
||
|
Initiator bool
|
||
|
|
||
|
// CommitBlob is an optional commit blob for the channel.
|
||
|
CommitBlob fn.Option[tlv.Blob]
|
||
|
|
||
|
// FundingBlob is an optional funding blob for the channel.
|
||
|
FundingBlob fn.Option[tlv.Blob]
|
||
|
|
||
|
// Type is the type of the witness that we are trying to resolve.
|
||
|
Type input.WitnessType
|
||
|
|
||
|
// CloseType is the type of close that we are trying to resolve.
|
||
|
CloseType CloseType
|
||
|
|
||
|
// CommitTx is the force close commitment transaction.
|
||
|
CommitTx *wire.MsgTx
|
||
|
|
||
|
// CommitFee is the fee that was paid for the commitment transaction.
|
||
|
CommitFee btcutil.Amount
|
||
|
|
||
|
// ContractPoint is the outpoint of the contract we're trying to
|
||
|
// resolve.
|
||
|
ContractPoint wire.OutPoint
|
||
|
|
||
|
// SignDesc is the sign descriptor for the contract.
|
||
|
SignDesc input.SignDescriptor
|
||
|
|
||
|
// KeyRing is the key ring for the channel.
|
||
|
KeyRing *CommitmentKeyRing
|
||
|
|
||
|
// CsvDelay is the CSV delay for the local output for this commitment.
|
||
|
CsvDelay uint32
|
||
|
|
||
|
// BreachCsvDelay is the CSV delay for the remote output. This is only
|
||
|
// set when the CloseType is Breach. This indicates the CSV delay to
|
||
|
// use for the remote party's to_local delayed output, that is now
|
||
|
// rightfully ours in a breach situation.
|
||
|
BreachCsvDelay fn.Option[uint32]
|
||
|
|
||
|
// CltvDelay is the CLTV delay for the outpoint.
|
||
|
CltvDelay fn.Option[uint32]
|
||
|
}
|
||
|
|
||
|
// AuxContractResolver is an interface that is used to resolve contracts that
|
||
|
// may need additional outside information to resolve correctly.
|
||
|
type AuxContractResolver interface {
|
||
|
// ResolveContract is called to resolve a contract that needs
|
||
|
// additional information to resolve properly. If no extra information
|
||
|
// is required, a nil Result error is returned.
|
||
|
ResolveContract(ResolutionReq) fn.Result[tlv.Blob]
|
||
|
}
|