mirror of https://github.com/zcash/mpc.git
Refactor construction of k query and Stage2Values.
This commit is contained in:
parent
97e2f2036d
commit
79ac89d6e9
|
@ -48,6 +48,31 @@ pub struct Stage2Values {
|
||||||
pub pk_k: Vec<G1>
|
pub pk_k: Vec<G1>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Stage2Values {
|
||||||
|
pub fn new(pk_a: &[G1], pk_b_temp: &[G1], pk_c: &[G1]) -> Self {
|
||||||
|
let mut pk_k = Vec::with_capacity(pk_a.len()+3);
|
||||||
|
|
||||||
|
for ((a, b), c) in pk_a.iter().take(pk_a.len() - 1)
|
||||||
|
.zip(pk_b_temp.iter().take(pk_b_temp.len() - 1))
|
||||||
|
.zip(pk_c.iter().take(pk_c.len() - 1))
|
||||||
|
{
|
||||||
|
pk_k.push(*a + *b + *c);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform Z extention as libsnark does.
|
||||||
|
pk_k.push(pk_a[pk_a.len() - 1]);
|
||||||
|
pk_k.push(pk_b_temp[pk_b_temp.len() - 1]);
|
||||||
|
pk_k.push(pk_c[pk_c.len() - 1]);
|
||||||
|
|
||||||
|
Stage2Values {
|
||||||
|
vk_gamma: G2::one(),
|
||||||
|
vk_beta_gamma_one: G1::one(),
|
||||||
|
vk_beta_gamma_two: G2::one(),
|
||||||
|
pk_k: pk_k
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq)]
|
#[derive(Clone, PartialEq, Eq)]
|
||||||
pub struct Spair<G: Group> {
|
pub struct Spair<G: Group> {
|
||||||
f: G,
|
f: G,
|
||||||
|
|
|
@ -250,31 +250,18 @@ impl<'a, R: Rng> Transcript<'a, R, RandomCoeffStage1> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn next(self) -> Transcript<'a, R, RandomCoeffStage2> {
|
pub fn next(self) -> Transcript<'a, R, RandomCoeffStage2> {
|
||||||
let mut pk_k = Vec::with_capacity(self.meta.values.pk_a.len()+3);
|
let stage2 = Stage2Values::new(
|
||||||
|
&self.meta.values.pk_a,
|
||||||
for ((&a, &b), &c) in self.meta.values.pk_a.iter().take(self.meta.values.pk_a.len() - 1)
|
&self.meta.values.pk_b_temp,
|
||||||
.zip(self.meta.values.pk_b_temp.iter().take(self.meta.values.pk_b_temp.len() - 1))
|
&self.meta.values.pk_c
|
||||||
.zip(self.meta.values.pk_c.iter().take(self.meta.values.pk_c.len() - 1))
|
);
|
||||||
{
|
|
||||||
pk_k.push(a + b + c);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform Z extention as libsnark does.
|
|
||||||
pk_k.push(self.meta.values.pk_a[self.meta.values.pk_a.len() - 1]);
|
|
||||||
pk_k.push(self.meta.values.pk_b_temp[self.meta.values.pk_b_temp.len() - 1]);
|
|
||||||
pk_k.push(self.meta.values.pk_c[self.meta.values.pk_c.len() - 1]);
|
|
||||||
|
|
||||||
Transcript {
|
Transcript {
|
||||||
meta: RandomCoeffStage2 {
|
meta: RandomCoeffStage2 {
|
||||||
spairs: self.meta.spairs,
|
spairs: self.meta.spairs,
|
||||||
powers_of_tau_g1: self.meta.powers_of_tau_g1,
|
powers_of_tau_g1: self.meta.powers_of_tau_g1,
|
||||||
coeffs_1: self.meta.values,
|
coeffs_1: self.meta.values,
|
||||||
values: Stage2Values {
|
values: stage2,
|
||||||
vk_gamma: G2::one(),
|
|
||||||
vk_beta_gamma_one: G1::one(),
|
|
||||||
vk_beta_gamma_two: G2::one(),
|
|
||||||
pk_k: pk_k
|
|
||||||
},
|
|
||||||
curplayer: 0
|
curplayer: 0
|
||||||
},
|
},
|
||||||
cs: self.cs,
|
cs: self.cs,
|
||||||
|
|
Loading…
Reference in New Issue