Module zebra_chain::serialization
source · Expand description
Consensus-critical serialization.
This module contains four traits: ZcashSerialize
and ZcashDeserialize
,
analogs of the Serde Serialize
and Deserialize
traits but intended for
consensus-critical Zcash serialization formats, and WriteZcashExt
and
ReadZcashExt
, extension traits for io::Read
and io::Write
with utility functions
for reading and writing data (e.g., the Bitcoin variable-integer format).
Modules
Arbitrary data generation for serialization proptests
SHA256d, a.k.a., double SHA2, a.k.a., 2 SHA 2 Furious
Structs
A
Vec<T>
wrapper that ensures there is at least one T
in the vector.An arbitrary CompactSize-encoded field.
Used for flags, arbitrary counts, and sizes that span multiple blocks.
A CompactSize-encoded field that is limited to
MAX_PROTOCOL_MESSAGE_LEN
.
Used for sizes or counts of objects that are sent in network messages.A date and time, represented by a 32-bit number of seconds since the UNIX epoch.
An unsigned time duration, represented by a 32-bit number of seconds.
A fake writer helper used to get object lengths without allocating RAM.
Enums
A serialization error.
Constants
The maximum length of a Zcash message, in bytes.
Traits
Extends
Read
with methods for writing Zcash/Bitcoin types.Blind preallocation of a
Vec<T: TrustedPreallocate>
is based on a bounded length. This is in contrast
to blind preallocation of a generic Vec<T>
, which is a DOS vector.Extends
Write
with methods for writing Zcash/Bitcoin types.Consensus-critical deserialization for Zcash.
Helper for deserializing more succinctly via type inference
Consensus-critical serialization for Zcash.
Functions
zcash_deserialize_external_count
, specialised for raw bytes.Deserialize a
Vec
containing external_count
items.Serialize a byte vector as a CompactSize number of items, then the items.
Serialize a raw byte
Vec
without writing the number of items as a
CompactSize.Serialize an empty list of items, by writing a zero CompactSize length.
(And no items.)
Serialize a typed
Vec
without writing the number of items as a
CompactSize.