mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-28 14:40:51 +02:00
lnwire: Add upfront shutdown messages and feature bit
This commit adds the feature bit and additional fields required in `open_channel` and `accept_channel` wire messages for `option_upfront_shutdown_script`.
This commit is contained in:
@@ -86,6 +86,12 @@ type AcceptChannel struct {
|
||||
// base point in order to derive the revocation keys that are placed
|
||||
// within the commitment transaction of the sender.
|
||||
FirstCommitmentPoint *btcec.PublicKey
|
||||
|
||||
// UpfrontShutdownScript is the script to which the channel funds should
|
||||
// be paid when mutually closing the channel. This field is optional, and
|
||||
// and has a length prefix, so a zero will be written if it is not set
|
||||
// and its length followed by the script will be written if it is set.
|
||||
UpfrontShutdownScript DeliveryAddress
|
||||
}
|
||||
|
||||
// A compile time check to ensure AcceptChannel implements the lnwire.Message
|
||||
@@ -113,6 +119,7 @@ func (a *AcceptChannel) Encode(w io.Writer, pver uint32) error {
|
||||
a.DelayedPaymentPoint,
|
||||
a.HtlcPoint,
|
||||
a.FirstCommitmentPoint,
|
||||
a.UpfrontShutdownScript,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -122,7 +129,8 @@ func (a *AcceptChannel) Encode(w io.Writer, pver uint32) error {
|
||||
//
|
||||
// This is part of the lnwire.Message interface.
|
||||
func (a *AcceptChannel) Decode(r io.Reader, pver uint32) error {
|
||||
return ReadElements(r,
|
||||
// Read all the mandatory fields in the accept message.
|
||||
err := ReadElements(r,
|
||||
a.PendingChannelID[:],
|
||||
&a.DustLimit,
|
||||
&a.MaxValueInFlight,
|
||||
@@ -138,6 +146,17 @@ func (a *AcceptChannel) Decode(r io.Reader, pver uint32) error {
|
||||
&a.HtlcPoint,
|
||||
&a.FirstCommitmentPoint,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Check for the optional upfront shutdown script field. If it is not there,
|
||||
// silence the EOF error.
|
||||
err = ReadElement(r, &a.UpfrontShutdownScript)
|
||||
if err != nil && err != io.EOF {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// MsgType returns the MessageType code which uniquely identifies this message
|
||||
@@ -154,5 +173,10 @@ func (a *AcceptChannel) MsgType() MessageType {
|
||||
// This is part of the lnwire.Message interface.
|
||||
func (a *AcceptChannel) MaxPayloadLength(uint32) uint32 {
|
||||
// 32 + (8 * 4) + (4 * 1) + (2 * 2) + (33 * 6)
|
||||
return 270
|
||||
var length uint32 = 270 // base length
|
||||
|
||||
// Upfront shutdown script max length.
|
||||
length += 2 + deliveryAddressMaxSize
|
||||
|
||||
return length
|
||||
}
|
||||
|
Reference in New Issue
Block a user