MCPcopy Create free account
hub / github.com/chain/Core / writeTo

Method writeTo

protocol/bc/legacy/transaction.go:215–268  ·  view source on GitHub ↗
(w io.Writer, serflags byte)

Source from the content-addressed store, hash-verified

213}
214
215func (tx *TxData) writeTo(w io.Writer, serflags byte) error {
216 _, err := w.Write([]byte{serflags})
217 if err != nil {
218 return errors.Wrap(err, "writing serialization flags")
219 }
220
221 _, err = blockchain.WriteVarint63(w, tx.Version)
222 if err != nil {
223 return errors.Wrap(err, "writing transaction version")
224 }
225
226 // common fields
227 _, err = blockchain.WriteExtensibleString(w, tx.CommonFieldsSuffix, func(w io.Writer) error {
228 _, err := blockchain.WriteVarint63(w, tx.MinTime)
229 if err != nil {
230 return errors.Wrap(err, "writing transaction min time")
231 }
232 _, err = blockchain.WriteVarint63(w, tx.MaxTime)
233 return errors.Wrap(err, "writing transaction max time")
234 })
235 if err != nil {
236 return errors.Wrap(err, "writing common fields")
237 }
238
239 // common witness
240 _, err = blockchain.WriteExtensibleString(w, tx.CommonWitnessSuffix, tx.writeCommonWitness)
241 if err != nil {
242 return errors.Wrap(err, "writing common witness")
243 }
244
245 _, err = blockchain.WriteVarint31(w, uint64(len(tx.Inputs)))
246 if err != nil {
247 return errors.Wrap(err, "writing tx input count")
248 }
249 for i, ti := range tx.Inputs {
250 err = ti.writeTo(w, serflags)
251 if err != nil {
252 return errors.Wrapf(err, "writing tx input %d", i)
253 }
254 }
255
256 _, err = blockchain.WriteVarint31(w, uint64(len(tx.Outputs)))
257 if err != nil {
258 return errors.Wrap(err, "writing tx output count")
259 }
260 for i, to := range tx.Outputs {
261 err = to.writeTo(w, serflags)
262 if err != nil {
263 return errors.Wrapf(err, "writing tx output %d", i)
264 }
265 }
266
267 return writeRefData(w, tx.ReferenceData, serflags)
268}
269
270// does not write the enclosing extensible string
271func (tx *TxData) writeCommonWitness(w io.Writer) error {

Callers 1

WriteToMethod · 0.95

Calls 2

writeRefDataFunction · 0.85
WriteMethod · 0.45

Tested by

no test coverage detected