mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-22 22:25:24 +01:00
lnwallet/chancloser: add new AuxChanCloser interface
This commit is contained in:
parent
117a144f4e
commit
7ff251ca44
1 changed files with 104 additions and 0 deletions
104
lnwallet/chancloser/aux_closer.go
Normal file
104
lnwallet/chancloser/aux_closer.go
Normal file
|
@ -0,0 +1,104 @@
|
|||
package chancloser
|
||||
|
||||
import (
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/btcsuite/btcd/btcutil"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/lightningnetwork/lnd/fn"
|
||||
"github.com/lightningnetwork/lnd/lnwallet"
|
||||
"github.com/lightningnetwork/lnd/lnwire"
|
||||
"github.com/lightningnetwork/lnd/tlv"
|
||||
)
|
||||
|
||||
// CloseOutput represents an output that should be included in the close
|
||||
// transaction.
|
||||
type CloseOutput struct {
|
||||
// Amt is the amount of the output.
|
||||
Amt btcutil.Amount
|
||||
|
||||
// DustLimit is the dust limit for the local node.
|
||||
DustLimit btcutil.Amount
|
||||
|
||||
// PkScript is the script that should be used to pay to the output.
|
||||
PkScript []byte
|
||||
|
||||
// ShutdownRecords is the set of custom records that may result in
|
||||
// extra close outputs being added.
|
||||
ShutdownRecords lnwire.CustomRecords
|
||||
}
|
||||
|
||||
// AuxShutdownReq is used to request a set of extra custom records to include
|
||||
// in the shutdown message.
|
||||
type AuxShutdownReq struct {
|
||||
// ChanPoint is the channel point of the channel that is being shut
|
||||
// down.
|
||||
ChanPoint wire.OutPoint
|
||||
|
||||
// ShortChanID is the short channel ID of the channel that is being
|
||||
// closed.
|
||||
ShortChanID lnwire.ShortChannelID
|
||||
|
||||
// Initiator is true if the local node is the initiator of the channel.
|
||||
Initiator bool
|
||||
|
||||
// InternalKey is the internal key for the shutdown addr. This will
|
||||
// only be set for taproot shutdown addrs.
|
||||
InternalKey fn.Option[btcec.PublicKey]
|
||||
|
||||
// CommitBlob is the blob that was included in the last commitment.
|
||||
CommitBlob fn.Option[tlv.Blob]
|
||||
|
||||
// FundingBlob is the blob that was included in the funding state.
|
||||
FundingBlob fn.Option[tlv.Blob]
|
||||
}
|
||||
|
||||
// AuxCloseDesc is used to describe the channel close that is being performed.
|
||||
type AuxCloseDesc struct {
|
||||
AuxShutdownReq
|
||||
|
||||
// CloseFee is the closing fee to be paid for this state.
|
||||
CloseFee btcutil.Amount
|
||||
|
||||
// CommitFee is the fee that was paid for the last commitment.
|
||||
CommitFee btcutil.Amount
|
||||
|
||||
// LocalCloseOutput is the output that the local node should be paid
|
||||
// to. This is None if the local party will not have an output on the
|
||||
// co-op close transaction.
|
||||
LocalCloseOutput fn.Option[CloseOutput]
|
||||
|
||||
// RemoteCloseOutput is the output that the remote node should be paid
|
||||
// to. This will be None if the remote party will not have an output on
|
||||
// the co-op close transaction.
|
||||
RemoteCloseOutput fn.Option[CloseOutput]
|
||||
}
|
||||
|
||||
// AuxCloseOutputs is used to specify extra outputs that should be used when
|
||||
// constructing the co-op close transaction.
|
||||
type AuxCloseOutputs struct {
|
||||
// ExtraCloseOutputs is a set of extra outputs that should be included
|
||||
// in the close transaction.
|
||||
ExtraCloseOutputs []lnwallet.CloseOutput
|
||||
|
||||
// CustomSort is a custom function that can be used to sort the
|
||||
// transaction outputs. If this isn't set, then the default BIP-69
|
||||
// sorting is used.
|
||||
CustomSort lnwallet.CloseSortFunc
|
||||
}
|
||||
|
||||
// AuxChanCloser is used to allow an external caller to modify the co-op close
|
||||
// transaction.
|
||||
type AuxChanCloser interface {
|
||||
// ShutdownBlob returns the set of custom records that should be
|
||||
// included in the shutdown message.
|
||||
ShutdownBlob(req AuxShutdownReq) (fn.Option[lnwire.CustomRecords],
|
||||
error)
|
||||
|
||||
// AuxCloseOutputs returns the set of custom outputs that should be used
|
||||
// to construct the co-op close transaction.
|
||||
AuxCloseOutputs(desc AuxCloseDesc) (fn.Option[AuxCloseOutputs], error)
|
||||
|
||||
// FinalizeClose is called after the close transaction has been agreed
|
||||
// upon.
|
||||
FinalizeClose(desc AuxCloseDesc, closeTx *wire.MsgTx) error
|
||||
}
|
Loading…
Add table
Reference in a new issue