Crate zebra_consensus[][src]

Implementation of Zcash consensus checks.

More specifically, this crate implements semantic validity checks, as defined below.

Verification levels.

Zebra’s implementation of the Zcash consensus rules is oriented around three telescoping notions of validity:

  1. Structural Validity, or whether the format and structure of the object are valid. For instance, Sprout-on-BCTV14 proofs are not allowed in version 4 transactions, and a transaction with a spend or output description must include a binding signature.

  2. Semantic Validity, or whether the object could potentially be valid, depending on the chain state. For instance, a transaction that spends a UTXO must supply a valid unlock script; a shielded transaction must have valid proofs, etc.

  3. Contextual Validity, or whether a semantically valid transaction is actually valid in the context of a particular chain state. For instance, a transaction that spends a UTXO is only valid if the UTXO remains unspent; a shielded transaction spending some note must reveal a nullifier not already in the nullifier set, etc.

Structural validity is enforced by the definitions of data structures in zebra-chain. Semantic validity is enforced by the code in this crate. Contextual validity is enforced in zebra-state when objects are committed to the chain state.

Modules

chain

Top-level semantic block verification for Zebra.

error

Errors that can occur when checking consensus rules.

Structs

Config

Consensus configuration.

Constants

MAX_CHECKPOINT_BYTE_COUNT

We limit the memory usage and download contention for each checkpoint, based on the cumulative size of the serialized blocks in the chain.

MAX_CHECKPOINT_HEIGHT_GAP

We limit the maximum number of blocks in each checkpoint. Each block uses a constant amount of memory for the supporting data structures and futures.

Type Definitions

BoxError

A boxed std::error::Error.