package consensus import ( "encoding/gob" "git.marketally.com/tutus-one/tutus-consensus" "git.marketally.com/tutus-one/tutus-consensus/internal/crypto" ) type ( prepareRequest struct { transactionHashes []crypto.Uint256 nonce uint64 timestamp uint32 } // prepareRequestAux is an auxiliary structure for prepareRequest encoding. prepareRequestAux struct { TransactionHashes []crypto.Uint256 Nonce uint64 Timestamp uint32 } ) var _ dbft.PrepareRequest[crypto.Uint256] = (*prepareRequest)(nil) // EncodeBinary implements Serializable interface. func (p prepareRequest) EncodeBinary(w *gob.Encoder) error { return w.Encode(&prepareRequestAux{ TransactionHashes: p.transactionHashes, Nonce: p.nonce, Timestamp: p.timestamp, }) } // DecodeBinary implements Serializable interface. func (p *prepareRequest) DecodeBinary(r *gob.Decoder) error { aux := new(prepareRequestAux) if err := r.Decode(aux); err != nil { return err } p.timestamp = aux.Timestamp p.nonce = aux.Nonce p.transactionHashes = aux.TransactionHashes return nil } // Timestamp implements PrepareRequest interface. func (p prepareRequest) Timestamp() uint64 { return secToNanoSec(p.timestamp) } // Nonce implements PrepareRequest interface. func (p prepareRequest) Nonce() uint64 { return p.nonce } // TransactionHashes implements PrepareRequest interface. func (p prepareRequest) TransactionHashes() []crypto.Uint256 { return p.transactionHashes }