You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
package lnwire |
|
|
|
import ( |
|
"io" |
|
) |
|
|
|
// OpaqueReason is an opaque encrypted byte slice that encodes the exact |
|
// failure reason and additional some supplemental data. The contents of this |
|
// slice can only be decrypted by the sender of the original HTLC. |
|
type OpaqueReason []byte |
|
|
|
// UpdateFailHTLC is sent by Alice to Bob in order to remove a previously added |
|
// HTLC. Upon receipt of an UpdateFailHTLC the HTLC should be removed from the |
|
// next commitment transaction, with the UpdateFailHTLC propagated backwards in |
|
// the route to fully undo the HTLC. |
|
type UpdateFailHTLC struct { |
|
// ChanIDPoint is the particular active channel that this |
|
// UpdateFailHTLC is bound to. |
|
ChanID ChannelID |
|
|
|
// ID references which HTLC on the remote node's commitment transaction |
|
// has timed out. |
|
ID uint64 |
|
|
|
// Reason is an onion-encrypted blob that details why the HTLC was |
|
// failed. This blob is only fully decryptable by the initiator of the |
|
// HTLC message. |
|
Reason OpaqueReason |
|
|
|
// 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 UpdateFailHTLC implements the lnwire.Message |
|
// interface. |
|
var _ Message = (*UpdateFailHTLC)(nil) |
|
|
|
// Decode deserializes a serialized UpdateFailHTLC message stored in the passed |
|
// io.Reader observing the specified protocol version. |
|
// |
|
// This is part of the lnwire.Message interface. |
|
func (c *UpdateFailHTLC) Decode(r io.Reader, pver uint32) error { |
|
return ReadElements(r, |
|
&c.ChanID, |
|
&c.ID, |
|
&c.Reason, |
|
&c.ExtraData, |
|
) |
|
} |
|
|
|
// Encode serializes the target UpdateFailHTLC into the passed io.Writer observing |
|
// the protocol version specified. |
|
// |
|
// This is part of the lnwire.Message interface. |
|
func (c *UpdateFailHTLC) Encode(w io.Writer, pver uint32) error { |
|
return WriteElements(w, |
|
c.ChanID, |
|
c.ID, |
|
c.Reason, |
|
c.ExtraData, |
|
) |
|
} |
|
|
|
// MsgType returns the integer uniquely identifying this message type on the |
|
// wire. |
|
// |
|
// This is part of the lnwire.Message interface. |
|
func (c *UpdateFailHTLC) MsgType() MessageType { |
|
return MsgUpdateFailHTLC |
|
} |
|
|
|
// TargetChanID returns the channel id of the link for which this message is |
|
// intended. |
|
// |
|
// NOTE: Part of peer.LinkUpdater interface. |
|
func (c *UpdateFailHTLC) TargetChanID() ChannelID { |
|
return c.ChanID |
|
}
|
|
|