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
- compact_
size ๐Types and serialization for the BitcoinCompactSize
format. - constraint ๐Serialization constraint helpers.
- date_
time ๐DateTime types with specific serialization invariants. - error ๐Errors for Zcash consensus-critical serialization.
- read_
zcash ๐ - serde_
helpers ๐ - SHA256d, a.k.a., double SHA2, a.k.a., 2 SHA 2 Furious
- write_
zcash ๐ - zcash_
deserialize ๐Converting bytes into Zcash consensus-critical data structures. - zcash_
serialize ๐Converting Zcash consensus-critical data structures into bytes.
Structsยง
- A
Vec<T>
wrapper that ensures there is at least oneT
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 genericVec<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
containingexternal_count
items. zcash_deserialize_external_count
, specialised forString
. The external count is in bytes. (Not UTF-8 characters.)- 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.