lnd.xprv/watchtower/wtdb/session_state_update.go
2019-06-13 17:40:04 -07:00

52 lines
1.2 KiB
Go

package wtdb
import (
"io"
"github.com/lightningnetwork/lnd/watchtower/blob"
)
// SessionStateUpdate holds a state update sent by a client along with its
// SessionID.
type SessionStateUpdate struct {
// ID the session id of the client who sent the state update.
ID SessionID
// SeqNum the sequence number of the update within the session.
SeqNum uint16
// LastApplied the highest index that client has acknowledged is
// committed
LastApplied uint16
// Hint is the 16-byte prefix of the revoked commitment transaction.
Hint blob.BreachHint
// EncryptedBlob is a ciphertext containing the sweep information for
// exacting justice if the commitment transaction matching the breach
// hint is broadcast.
EncryptedBlob []byte
}
// Encode serializes the state update into the provided io.Writer.
func (u *SessionStateUpdate) Encode(w io.Writer) error {
return WriteElements(w,
u.ID,
u.SeqNum,
u.LastApplied,
u.Hint,
u.EncryptedBlob,
)
}
// Decode deserializes the target state update from the provided io.Reader.
func (u *SessionStateUpdate) Decode(r io.Reader) error {
return ReadElements(r,
&u.ID,
&u.SeqNum,
&u.LastApplied,
&u.Hint,
&u.EncryptedBlob,
)
}