github.com/decred/dcrlnd@v0.7.6/input/txout.go (about) 1 package input 2 3 import ( 4 "encoding/binary" 5 "io" 6 7 "github.com/decred/dcrd/wire" 8 ) 9 10 // writeTxOut serializes a wire.TxOut struct into the passed io.Writer stream. 11 func writeTxOut(w io.Writer, txo *wire.TxOut) error { 12 var scratch [8]byte 13 14 binary.BigEndian.PutUint64(scratch[:], uint64(txo.Value)) 15 if _, err := w.Write(scratch[:]); err != nil { 16 return err 17 } 18 19 if err := wire.WriteVarBytes(w, 0, txo.PkScript); err != nil { 20 return err 21 } 22 23 return nil 24 } 25 26 // readTxOut deserializes a wire.TxOut struct from the passed io.Reader stream. 27 func readTxOut(r io.Reader, txo *wire.TxOut) error { 28 var scratch [8]byte 29 30 if _, err := io.ReadFull(r, scratch[:]); err != nil { 31 return err 32 } 33 value := int64(binary.BigEndian.Uint64(scratch[:])) 34 35 pkScript, err := wire.ReadVarBytes(r, 0, 80, "pkScript") 36 if err != nil { 37 return err 38 } 39 40 *txo = wire.TxOut{ 41 Value: value, 42 PkScript: pkScript, 43 } 44 45 return nil 46 }