Skip to content

Commit 19d1d63

Browse files
authored
Update to latest Rust and fix Clippy warnings (#37)
* Update to latest Rust and fix Clippy warnings * cleanup
1 parent f465aed commit 19d1d63

19 files changed

+227
-249
lines changed

.cargo/config

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[build]
2+
rustflags = [
3+
"-C", "target-cpu=native",
4+
]

.github/workflows/rust.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Rust
1+
name: Build and Test Spartan
22

33
on:
44
push:
@@ -8,16 +8,23 @@ on:
88

99
jobs:
1010
build:
11-
1211
runs-on: ubuntu-latest
13-
1412
steps:
1513
- uses: actions/checkout@v2
1614
- name: Install
17-
run: rustup default nightly-2021-01-31
15+
run: rustup default nightly
16+
- name: Install rustfmt Components
17+
run: rustup component add rustfmt
18+
- name: Install clippy
19+
run: rustup component add clippy
1820
- name: Build
1921
run: cargo build --verbose
2022
- name: Run tests
2123
run: cargo test --verbose
2224
- name: Build examples
2325
run: cargo build --examples --verbose
26+
- name: Check Rustfmt Code Style
27+
run: cargo fmt --all -- --check
28+
- name: Check clippy warnings
29+
run: cargo clippy --all-targets --all-features -- -D warnings
30+

Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "spartan"
3-
version = "0.3.0"
3+
version = "0.4.0"
44
authors = ["Srinath Setty <[email protected]>"]
55
edition = "2018"
66
description = "High-speed zkSNARKs without trusted setup"
@@ -11,7 +11,7 @@ license-file = "LICENSE"
1111
keywords = ["zkSNARKs", "cryptography", "proofs"]
1212

1313
[dependencies]
14-
curve25519-dalek = {version = "3.0.0", features = ["serde", "simd_backend"]}
14+
curve25519-dalek = {version = "3.2.0", features = ["serde", "simd_backend"]}
1515
merlin = "3.0.0"
1616
rand = "0.7.3"
1717
digest = "0.8.1"
@@ -20,7 +20,7 @@ byteorder = "1.3.4"
2020
rayon = { version = "1.3.0", optional = true }
2121
serde = { version = "1.0.106", features = ["derive"] }
2222
bincode = "1.2.1"
23-
subtle = { version = "^2.2.3", default-features = false }
23+
subtle = { version = "2.4", default-features = false }
2424
rand_core = { version = "0.5", default-features = false }
2525
zeroize = { version = "1", default-features = false }
2626
itertools = "0.10.0"

benches/nizk.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ fn nizk_prove_benchmark(c: &mut Criterion) {
1818
let mut group = c.benchmark_group("NIZK_prove_benchmark");
1919
group.plot_config(plot_config);
2020

21-
let num_vars = (2 as usize).pow(s as u32);
21+
let num_vars = (2_usize).pow(s as u32);
2222
let num_cons = num_vars;
2323
let num_inputs = 10;
2424

@@ -49,7 +49,7 @@ fn nizk_verify_benchmark(c: &mut Criterion) {
4949
let mut group = c.benchmark_group("NIZK_verify_benchmark");
5050
group.plot_config(plot_config);
5151

52-
let num_vars = (2 as usize).pow(s as u32);
52+
let num_vars = (2_usize).pow(s as u32);
5353
let num_cons = num_vars;
5454
let num_inputs = 10;
5555
let (inst, vars, inputs) = Instance::produce_synthetic_r1cs(num_cons, num_vars, num_inputs);

benches/snark.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ fn snark_encode_benchmark(c: &mut Criterion) {
1212
let mut group = c.benchmark_group("SNARK_encode_benchmark");
1313
group.plot_config(plot_config);
1414

15-
let num_vars = (2 as usize).pow(s as u32);
15+
let num_vars = (2_usize).pow(s as u32);
1616
let num_cons = num_vars;
1717
let num_inputs = 10;
1818
let (inst, _vars, _inputs) = Instance::produce_synthetic_r1cs(num_cons, num_vars, num_inputs);
@@ -37,7 +37,7 @@ fn snark_prove_benchmark(c: &mut Criterion) {
3737
let mut group = c.benchmark_group("SNARK_prove_benchmark");
3838
group.plot_config(plot_config);
3939

40-
let num_vars = (2 as usize).pow(s as u32);
40+
let num_vars = (2_usize).pow(s as u32);
4141
let num_cons = num_vars;
4242
let num_inputs = 10;
4343

@@ -74,7 +74,7 @@ fn snark_verify_benchmark(c: &mut Criterion) {
7474
let mut group = c.benchmark_group("SNARK_verify_benchmark");
7575
group.plot_config(plot_config);
7676

77-
let num_vars = (2 as usize).pow(s as u32);
77+
let num_vars = (2_usize).pow(s as u32);
7878
let num_cons = num_vars;
7979
let num_inputs = 10;
8080
let (inst, vars, inputs) = Instance::produce_synthetic_r1cs(num_cons, num_vars, num_inputs);

examples/cubic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ fn produce_r1cs() -> (
9393

9494
// check if the instance we created is satisfiable
9595
let res = inst.is_sat(&assignment_vars, &assignment_inputs);
96-
assert_eq!(res.unwrap(), true, "should be satisfied");
96+
assert!(res.unwrap(), "should be satisfied");
9797

9898
(
9999
num_cons,

profiler/nizk.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn main() {
1919

2020
println!("Profiler:: NIZK");
2121
for &s in inst_sizes.iter() {
22-
let num_vars = (2 as usize).pow(s as u32);
22+
let num_vars = (2_usize).pow(s as u32);
2323
let num_cons = num_vars;
2424
let num_inputs = 10;
2525

profiler/snark.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub fn main() {
1818

1919
println!("Profiler:: SNARK");
2020
for &s in inst_sizes.iter() {
21-
let num_vars = (2 as usize).pow(s as u32);
21+
let num_vars = (2_usize).pow(s as u32);
2222
let num_cons = num_vars;
2323
let num_inputs = 10;
2424

src/dense_mlpoly.rs

+36-38
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,11 @@ impl IdentityPolynomial {
117117

118118
impl DensePolynomial {
119119
pub fn new(Z: Vec<Scalar>) -> Self {
120-
let len = Z.len();
121-
let num_vars = len.log2();
122-
DensePolynomial { num_vars, Z, len }
120+
DensePolynomial {
121+
num_vars: Z.len().log2() as usize,
122+
len: Z.len(),
123+
Z,
124+
}
123125
}
124126

125127
pub fn get_num_vars(&self) -> usize {
@@ -143,7 +145,7 @@ impl DensePolynomial {
143145
}
144146

145147
#[cfg(feature = "multicore")]
146-
fn commit_inner(&self, blinds: &Vec<Scalar>, gens: &MultiCommitGens) -> PolyCommitment {
148+
fn commit_inner(&self, blinds: &[Scalar], gens: &MultiCommitGens) -> PolyCommitment {
147149
let L_size = blinds.len();
148150
let R_size = self.Z.len() / L_size;
149151
assert_eq!(L_size * R_size, self.Z.len());
@@ -187,9 +189,9 @@ impl DensePolynomial {
187189
let R_size = right_num_vars.pow2();
188190
assert_eq!(L_size * R_size, n);
189191

190-
let blinds = if random_tape.is_some() {
192+
let blinds = if let Some(t) = random_tape {
191193
PolyCommitmentBlinds {
192-
blinds: random_tape.unwrap().random_vector(b"poly_blinds", L_size),
194+
blinds: t.random_vector(b"poly_blinds", L_size),
193195
}
194196
} else {
195197
PolyCommitmentBlinds {
@@ -352,7 +354,7 @@ impl PolyEvalProof {
352354
&LZ,
353355
&LZ_blind,
354356
&R,
355-
&Zr,
357+
Zr,
356358
blind_Zr,
357359
);
358360

@@ -404,7 +406,7 @@ mod tests {
404406
use super::*;
405407
use rand::rngs::OsRng;
406408

407-
fn evaluate_with_LR(Z: &Vec<Scalar>, r: &Vec<Scalar>) -> Scalar {
409+
fn evaluate_with_LR(Z: &[Scalar], r: &[Scalar]) -> Scalar {
408410
let eq = EqPolynomial::new(r.to_vec());
409411
let (L, R) = eq.compute_factored_evals();
410412

@@ -427,25 +429,26 @@ mod tests {
427429

428430
#[test]
429431
fn check_polynomial_evaluation() {
430-
let mut Z: Vec<Scalar> = Vec::new(); // Z = [1, 2, 1, 4]
431-
Z.push(Scalar::one());
432-
Z.push((2 as usize).to_scalar());
433-
Z.push((1 as usize).to_scalar());
434-
Z.push((4 as usize).to_scalar());
432+
// Z = [1, 2, 1, 4]
433+
let Z = vec![
434+
Scalar::one(),
435+
(2_usize).to_scalar(),
436+
(1_usize).to_scalar(),
437+
(4_usize).to_scalar(),
438+
];
439+
435440
// r = [4,3]
436-
let mut r: Vec<Scalar> = Vec::new();
437-
r.push((4 as usize).to_scalar());
438-
r.push((3 as usize).to_scalar());
441+
let r = vec![(4_usize).to_scalar(), (3_usize).to_scalar()];
439442

440443
let eval_with_LR = evaluate_with_LR(&Z, &r);
441444
let poly = DensePolynomial::new(Z);
442445

443446
let eval = poly.evaluate(&r);
444-
assert_eq!(eval, (28 as usize).to_scalar());
447+
assert_eq!(eval, (28_usize).to_scalar());
445448
assert_eq!(eval_with_LR, eval);
446449
}
447450

448-
pub fn compute_factored_chis_at_r(r: &Vec<Scalar>) -> (Vec<Scalar>, Vec<Scalar>) {
451+
pub fn compute_factored_chis_at_r(r: &[Scalar]) -> (Vec<Scalar>, Vec<Scalar>) {
449452
let mut L: Vec<Scalar> = Vec::new();
450453
let mut R: Vec<Scalar> = Vec::new();
451454

@@ -484,7 +487,7 @@ mod tests {
484487
(L, R)
485488
}
486489

487-
pub fn compute_chis_at_r(r: &Vec<Scalar>) -> Vec<Scalar> {
490+
pub fn compute_chis_at_r(r: &[Scalar]) -> Vec<Scalar> {
488491
let ell = r.len();
489492
let n = ell.pow2();
490493
let mut chis: Vec<Scalar> = Vec::new();
@@ -505,15 +508,12 @@ mod tests {
505508

506509
pub fn compute_outerproduct(L: Vec<Scalar>, R: Vec<Scalar>) -> Vec<Scalar> {
507510
assert_eq!(L.len(), R.len());
508-
509-
let mut O: Vec<Scalar> = Vec::new();
510-
let m = L.len();
511-
for i in 0..m {
512-
for j in 0..m {
513-
O.push(L[i] * R[j]);
514-
}
515-
}
516-
O
511+
(0..L.len())
512+
.map(|i| (0..R.len()).map(|j| L[i] * R[j]).collect::<Vec<Scalar>>())
513+
.collect::<Vec<Vec<Scalar>>>()
514+
.into_iter()
515+
.flatten()
516+
.collect::<Vec<Scalar>>()
517517
}
518518

519519
#[test]
@@ -563,20 +563,18 @@ mod tests {
563563

564564
#[test]
565565
fn check_polynomial_commit() {
566-
let mut Z: Vec<Scalar> = Vec::new(); // Z = [1, 2, 1, 4]
567-
Z.push((1 as usize).to_scalar());
568-
Z.push((2 as usize).to_scalar());
569-
Z.push((1 as usize).to_scalar());
570-
Z.push((4 as usize).to_scalar());
571-
566+
let Z = vec![
567+
(1_usize).to_scalar(),
568+
(2_usize).to_scalar(),
569+
(1_usize).to_scalar(),
570+
(4_usize).to_scalar(),
571+
];
572572
let poly = DensePolynomial::new(Z);
573573

574574
// r = [4,3]
575-
let mut r: Vec<Scalar> = Vec::new();
576-
r.push((4 as usize).to_scalar());
577-
r.push((3 as usize).to_scalar());
575+
let r = vec![(4_usize).to_scalar(), (3_usize).to_scalar()];
578576
let eval = poly.evaluate(&r);
579-
assert_eq!(eval, (28 as usize).to_scalar());
577+
assert_eq!(eval, (28_usize).to_scalar());
580578

581579
let gens = PolyCommitmentGens::new(poly.get_num_vars(), b"test-two");
582580
let (poly_commitment, blinds) = poly.commit(&gens, None);

0 commit comments

Comments
 (0)