Skip to content

Commit 61b51fd

Browse files
committed
nit: improve readability of range proof example
1 parent 457780e commit 61b51fd

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/tests/test_relations.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ pub fn test_range<G: PrimeGroup, R: RngCore>(
207207
let G = G::generator();
208208
let H = G::random(&mut rng);
209209

210-
let bases = [1, 2, 4, 8, 16, 32, 64, 128, 256, 313, 512];
210+
let bases = [1, 2, 4, 8, 16, 32, 64, 128, 256, 313, 512].map(G::Scalar::from);
211211
const BITS: usize = 11;
212212

213213
let mut instance = LinearRelation::new();
@@ -216,23 +216,26 @@ pub fn test_range<G: PrimeGroup, R: RngCore>(
216216
let vars_b = instance.allocate_scalars::<BITS>();
217217
let vars_s = instance.allocate_scalars::<BITS>();
218218
let var_s2 = instance.allocate_scalars::<BITS>();
219+
let var_Ds = instance.allocate_elements::<BITS>();
219220

220-
let var_C = instance.allocate_eq(var_x * var_G + var_r * var_H);
221-
let mut var_Ds = Vec::new();
221+
// `var_Ds[i]` are bit commitments.
222222
for i in 0..BITS {
223-
let var_D_i = instance.allocate_eq(vars_b[i] * var_G + vars_s[i] * var_H);
224-
instance.append_equation(var_D_i, vars_b[i] * var_D_i + var_s2[i] * var_H);
225-
var_Ds.push(var_D_i);
223+
instance.append_equation(var_Ds[i], vars_b[i] * var_G + vars_s[i] * var_H);
224+
instance.append_equation(var_Ds[i], vars_b[i] * var_Ds[i] + var_s2[i] * var_H);
226225
}
226+
// `var_C` is a Pedersen commitment to `var_x`.
227+
let var_C = instance.allocate_eq(var_x * var_G + var_r * var_H);
228+
// `var_x` = sum(bases[i] * var_b[i])
227229
instance.append_equation(
228230
var_C,
229231
(0..BITS)
230-
.map(|i| var_Ds[i] * vars_b[i] * G::Scalar::from(bases[i]))
232+
.map(|i| var_Ds[i] * vars_b[i] * bases[i])
231233
.sum::<Sum<_>>(),
232234
);
233235

234236
let r = G::Scalar::random(&mut rng);
235237
let x = G::Scalar::from(822);
238+
236239
let b = [
237240
G::Scalar::ZERO,
238241
G::Scalar::ONE,
@@ -251,12 +254,10 @@ pub fn test_range<G: PrimeGroup, R: RngCore>(
251254
.map(|_| G::Scalar::random(&mut rng))
252255
.collect::<Vec<_>>();
253256
let partial_sum = (0..BITS - 1)
254-
.map(|i| b[i] * G::Scalar::from(bases[i]) * s[i])
257+
.map(|i| b[i] * bases[i] * s[i])
255258
.sum::<G::Scalar>();
256259
s[BITS - 1] = r - partial_sum;
257-
s[BITS - 1] *= (b[BITS - 1] * G::Scalar::from(bases[BITS - 1]))
258-
.invert()
259-
.unwrap();
260+
s[BITS - 1] *= (b[BITS - 1] * bases[BITS - 1]).invert().unwrap();
260261
let s2 = (0..BITS)
261262
.map(|i| (G::Scalar::ONE - b[i]) * s[i])
262263
.collect::<Vec<_>>();

0 commit comments

Comments
 (0)