This release follows draft-34 of the Bandersnatch VRF specification.
RingContextstruct for lightweight ring proof parameter caching.
Contains only the PIOP parameters needed for prover/verifier instance construction, without the KZG SRS required for key construction.- Multi-ring batch verification: a single
ring::BatchVerifiercan now aggregate proofs from multiple rings sharing the same KZG SRS into one batched pairing check. ring::BatchItem::new(verifier, ios, ad, proof)andpedersen::BatchItem::new(ios, ad, proof)constructors for preparing batch items independently of any verifier instance.
Changed
- Bump
w3f-ring-proofdependency to 0.0.8. RingProofParamsrenamed toRingSetup.Suite::SUITE_IDis now a self-describing byte string (e.g.
b"Bandersnatch-SHA512-ELL2-v1") used directly as the transcript seed and hash-to-curve DST prefix, replacing the structured 4-byteSuiteId { version, curve, hash, h2c }.Transcript::newnow takes&[u8]. Breaking change for customSuiteimplementations.- Hash-to-curve DST unified to
SUITE_ID || DomSep::HashToCurvefor both Try-And-Increment and Elligator2 paths, replacing the prior"ECVRF_" || h2c_suite_id || suite_bytesform.hash_to_curve_ell2_xmdandhash_to_curve_ell2_xofno longer take a separateh2c_suite_idargument.DomSep::HashToCurveTaiis renamed toHashToCurveand shared across both paths;ThinBatch/PedersenBatchcollapse into a singleBatchVerify. DigestXofcounter widened fromu32tou64.- Per-suite
BLINDING_BASE,ACCUMULATOR_BASE,PADDINGpoints and all test vectors regenerated under the new DSTs; previous values do not verify.
Removed
RingProofParams::verifier_no_contextmethod, superseded byRingContext::new.ring::BatchVerifier::prepareandpedersen::BatchVerifier::prepare, superseded byBatchItem::newconstructors.SuiteIdstruct and thecurve/hash/h2cconstant modules undersuites, superseded by the byte-stringSUITE_ID.