| 153 | } |
| 154 | |
| 155 | pub fn gen_proof(self, challenge: &E::ScalarField) -> CLSRangeProof<E> { |
| 156 | let z_v = cfg_into_iter!(0..self.V.len()) |
| 157 | .map(|i| self.t[i] + (self.v[i] * challenge)) |
| 158 | .collect::<Vec<_>>(); |
| 159 | let z_sigma = cfg_into_iter!(0..self.V.len()) |
| 160 | .map(|i| self.s[i] + (self.digits[i] * challenge)) |
| 161 | .collect::<Vec<_>>(); |
| 162 | let z_r = self.m + (self.r * challenge); |
| 163 | CLSRangeProof { |
| 164 | base: self.base, |
| 165 | V: self.V, |
| 166 | a: self.a, |
| 167 | D: self.D, |
| 168 | z_v, |
| 169 | z_sigma, |
| 170 | z_r, |
| 171 | } |
| 172 | } |
| 173 | |
| 174 | pub fn compute_challenge_contribution<W: Write>( |
| 175 | V: &[E::G1Affine], |