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§
- SHA256d, a.k.a., double SHA2, a.k.a., 2 SHA 2 Furious
Structs§
- A
Vec<T>wrapper that ensures there is at least oneTin 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
Readwith 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
Writewith 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
Veccontainingexternal_countitems. 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
Vecwithout 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
Vecwithout writing the number of items as a CompactSize.