Update to the new eVRF proof

This commit is contained in:
Luke Parker
2024-07-25 02:55:10 -04:00
parent eca82f3f7b
commit 00dc3087bd
8 changed files with 485 additions and 303 deletions

View File

@@ -7,14 +7,18 @@ use generic_array::typenum::{Sum, Diff, Quot, U, U1, U2};
use blake2::{Digest, Blake2b512};
use ciphersuite::{
group::ff::{FromUniformBytes, PrimeField},
group::{
ff::{FromUniformBytes, Field, PrimeField},
Group,
},
Ciphersuite,
};
use pasta_curves::{Ep, Eq, Fp, Fq};
use generalized_bulletproofs::tests::generators;
use generalized_bulletproofs_ec_gadgets::DiscreteLogParameters;
use crate::*;
use crate::evrf::proof::*;
#[derive(Clone, Copy, PartialEq, Eq, Debug, Zeroize)]
struct Pallas;
@@ -64,26 +68,36 @@ impl EvrfCurve for Pallas {
}
#[test]
fn pasta_test() {
fn evrf_proof_pasta_test() {
let generators = generators(1024);
let vesta_private_key = Zeroizing::new(<Vesta as Ciphersuite>::F::random(&mut OsRng));
let ecdh_public_keys =
[<Vesta as Ciphersuite>::G::random(&mut OsRng), <Vesta as Ciphersuite>::G::random(&mut OsRng)];
let time = Instant::now();
let res =
Evrf::prove::<Pallas>(&mut OsRng, &generators, vesta_private_key.clone(), [0; 32], 1).unwrap();
println!("Proving time: {:?}", Instant::now() - time);
let res = Evrf::<Pallas>::prove(
&mut OsRng,
&generators,
vesta_private_key.clone(),
[0; 32],
1,
&ecdh_public_keys,
)
.unwrap();
println!("Proving time: {:?}", time.elapsed());
let time = Instant::now();
let mut verifier = generators.batch_verifier();
dbg!(Evrf::verify::<Pallas>(
dbg!(Evrf::<Pallas>::verify(
&mut OsRng,
&generators,
&mut verifier,
Vesta::generator() * *vesta_private_key,
[0; 32],
1,
&ecdh_public_keys,
&res.proof,
)
.unwrap());
assert!(generators.verify(verifier));
println!("Verifying time: {:?}", Instant::now() - time);
println!("Verifying time: {:?}", time.elapsed());
}