zebra_state::service::check::nullifier

Function no_duplicates_in_finalized_chain

source
pub(crate) fn no_duplicates_in_finalized_chain(
    semantically_verified: &SemanticallyVerifiedBlock,
    finalized_state: &ZebraDb,
) -> Result<(), ValidateContextError>
Expand description

Reject double-spends of nullifers:

(Duplicate non-finalized nullifiers are rejected during the chain update, see add_to_non_finalized_chain_unique for details.)

ยงConsensus

A nullifier MUST NOT repeat either within a transaction, or across transactions in a valid blockchain. Sprout and Sapling and Orchard nullifiers are considered disjoint, even if they have the same bit pattern.

https://zips.z.cash/protocol/protocol.pdf#nullifierset