Skip to main content

queue_orchard_bundle

Function queue_orchard_bundle 

Source
fn queue_orchard_bundle(
    select_verifier: impl FnOnce() -> &'static VerifierService,
    bundle: Option<Bundle<Authorized, ZatBalance>>,
    sighash: &SigHash,
) -> AsyncChecks
Expand description

Queues an Orchard-shaped bundle’s single aggregated Halo2 proof against a verifier.

§Consensus

The proof 𝜋 MUST be valid given a primary input (cv, rt^{Orchard}, nf, rk, cm_x, enableSpends, enableOutputs)

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

Unlike Sapling, Orchard shielded transactions have a single aggregated Halo2 proof per transaction, even with multiple Actions, so it is queued for verification only once instead of once per Action description. The choice of verifying key is the caller’s; see verify_orchard_bundle and verify_orchard_v6_bundle.

select_verifier is only invoked when a bundle is present, so a bundle-less transaction never forces the (lazily initialized) verifier services.