Module 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
Arbitrary data generation for serialization proptests
compact_size 🔒
Types and serialization for the Bitcoin CompactSize 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
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§

AtLeastOne
A Vec<T> wrapper that ensures there is at least one T in the vector.
CompactSize64
An arbitrary CompactSize-encoded field. Used for flags, arbitrary counts, and sizes that span multiple blocks.
CompactSizeMessage
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.
DateTime32
A date and time, represented by a 32-bit number of seconds since the UNIX epoch.
Duration32
An unsigned time duration, represented by a 32-bit number of seconds.
FakeWriter
A fake writer helper used to get object lengths without allocating RAM.

Enums§

SerializationError
A serialization error.

Constants§

MAX_PROTOCOL_MESSAGE_LEN
The maximum length of a Zcash message, in bytes.

Traits§

ReadZcashExt
Extends Read with methods for writing Zcash/Bitcoin types.
TrustedPreallocate
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.
WriteZcashExt
Extends Write with methods for writing Zcash/Bitcoin types.
ZcashDeserialize
Consensus-critical deserialization for Zcash.
ZcashDeserializeInto
Helper for deserializing more succinctly via type inference
ZcashSerialize
Consensus-critical serialization for Zcash.

Functions§

zcash_deserialize_bytes_external_count
zcash_deserialize_external_count, specialised for raw bytes.
zcash_deserialize_external_count
Deserialize a Vec containing external_count items.
zcash_deserialize_string_external_count
zcash_deserialize_external_count, specialised for String. The external count is in bytes. (Not UTF-8 characters.)
zcash_serialize_bytes
Serialize a byte vector as a CompactSize number of items, then the items.
zcash_serialize_bytes_external_count
Serialize a raw byte Vec without writing the number of items as a CompactSize.
zcash_serialize_empty_list
Serialize an empty list of items, by writing a zero CompactSize length. (And no items.)
zcash_serialize_external_count
Serialize a typed Vec without writing the number of items as a CompactSize.