github.com/decred/dcrlnd@v0.7.6/lnwire/update_fee.go (about) 1 package lnwire 2 3 import ( 4 "bytes" 5 "io" 6 ) 7 8 // UpdateFee is the message the channel initiator sends to the other peer if 9 // the channel commitment fee needs to be updated. 10 type UpdateFee struct { 11 // ChanID is the channel that this UpdateFee is meant for. 12 ChanID ChannelID 13 14 // FeePerKB is the fee-per-kB on commit transactions that the sender of 15 // this message wants to use for this channel. 16 // 17 // TODO(halseth): make AtomsPerKWeight when fee estimation is moved to 18 // own package. Currently this will cause an import cycle. 19 FeePerKB uint32 20 21 // ExtraData is the set of data that was appended to this message to 22 // fill out the full maximum transport message size. These fields can 23 // be used to specify optional data such as custom TLV fields. 24 ExtraData ExtraOpaqueData 25 } 26 27 // NewUpdateFee creates a new UpdateFee message. 28 func NewUpdateFee(chanID ChannelID, feePerKB uint32) *UpdateFee { 29 return &UpdateFee{ 30 ChanID: chanID, 31 FeePerKB: feePerKB, 32 } 33 } 34 35 // A compile time check to ensure UpdateFee implements the lnwire.Message 36 // interface. 37 var _ Message = (*UpdateFee)(nil) 38 39 // Decode deserializes a serialized UpdateFee message stored in the passed 40 // io.Reader observing the specified protocol version. 41 // 42 // This is part of the lnwire.Message interface. 43 func (c *UpdateFee) Decode(r io.Reader, pver uint32) error { 44 return ReadElements(r, 45 &c.ChanID, 46 &c.FeePerKB, 47 &c.ExtraData, 48 ) 49 } 50 51 // Encode serializes the target UpdateFee into the passed io.Writer 52 // observing the protocol version specified. 53 // 54 // This is part of the lnwire.Message interface. 55 func (c *UpdateFee) Encode(w *bytes.Buffer, pver uint32) error { 56 if err := WriteChannelID(w, c.ChanID); err != nil { 57 return err 58 } 59 60 if err := WriteUint32(w, c.FeePerKB); err != nil { 61 return err 62 } 63 64 return WriteBytes(w, c.ExtraData) 65 } 66 67 // MsgType returns the integer uniquely identifying this message type on the 68 // wire. 69 // 70 // This is part of the lnwire.Message interface. 71 func (c *UpdateFee) MsgType() MessageType { 72 return MsgUpdateFee 73 } 74 75 // TargetChanID returns the channel id of the link for which this message is 76 // intended. 77 // 78 // NOTE: Part of peer.LinkUpdater interface. 79 func (c *UpdateFee) TargetChanID() ChannelID { 80 return c.ChanID 81 }