lnd/lnwire/kickoff_sig.go

57 lines
1.7 KiB
Go

package lnwire
import (
"bytes"
"io"
)
// KickoffSig is the message used to transmit the signature for a kickoff
// transaction during the execution phase of a dynamic commitment negotiation
// that requires a reanchoring step.
type KickoffSig struct {
// ChanID identifies the channel id for which this signature is
// intended.
ChanID ChannelID
// Signature contains the ECDSA signature that signs the kickoff
// transaction.
Signature Sig
// ExtraData is the set of data that was appended to this message to
// fill out the full maximum transport message size. These fields can
// be used to specify optional data such as custom TLV fields.
ExtraData ExtraOpaqueData
}
// A compile time check to ensure that KickoffSig implements the lnwire.Message
// interface.
var _ Message = (*KickoffSig)(nil)
// Encode serializes the target KickoffSig into the passed bytes.Buffer
// observing the specified protocol version.
//
// This is part of the lnwire.Message interface.
func (ks *KickoffSig) Encode(w *bytes.Buffer, _ uint32) error {
if err := WriteChannelID(w, ks.ChanID); err != nil {
return err
}
if err := WriteSig(w, ks.Signature); err != nil {
return err
}
return WriteBytes(w, ks.ExtraData)
}
// Decode deserializes a serialized KickoffSig message stored in the passed
// io.Reader observing the specified protocol version.
//
// This is part of the lnwire.Message interface.
func (ks *KickoffSig) Decode(r io.Reader, _ uint32) error {
return ReadElements(r, &ks.ChanID, &ks.Signature, &ks.ExtraData)
}
// MsgType returns the integer uniquely identifying KickoffSig on the wire.
//
// This is part of the lnwire.Message interface.
func (ks *KickoffSig) MsgType() MessageType { return MsgKickoffSig }