pub fn dleq_verify_batch(
    ps: &[VRFInOut],
    proofs: &[VRFProofBatchable],
    public_keys: &[PublicKey],
    kusama: bool
) -> SignatureResult<()>
Expand description

Batch verify DLEQ proofs where the public keys were held by different parties.

We first reconstruct the cs present in the VRFProofs but absent in the VRFProofBatchables, using shorten_dleq. We then verify the R and Hr components of the VRFProofBatchables using the two equations a normal verification uses to discover them. We do this by delinearizing both verification equations with random numbers.

TODO: Assess when the two verification equations should be combined, presumably by benchmarking both forms. At smaller batch sizes then we should clearly benefit form the combined form, but bany combination doubles the scalar by scalar multiplicications and hashing, so large enough batch verifications should favor two seperate calls.