mirror of
https://github.com/arnaucube/mimc-rs.git
synced 2026-02-06 19:16:45 +01:00
Add GHA, small clean
This commit is contained in:
13
.github/workflows/rust.yml
vendored
Normal file
13
.github/workflows/rust.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Test
|
||||
on: [push, pull_request]
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: cargo build --verbose
|
||||
- name: Run tests
|
||||
run: cargo test --verbose
|
||||
@@ -1,9 +0,0 @@
|
||||
language: rust
|
||||
rust:
|
||||
- stable
|
||||
|
||||
cache:
|
||||
- cargo
|
||||
|
||||
script:
|
||||
- RUST_BACKTRACE=1 cargo test --all
|
||||
@@ -1,4 +1,4 @@
|
||||
# mimc-rs [](https://crates.io/crates/mimc-rs) [](https://travis-ci.org/arnaucube/mimc-rs)
|
||||
# mimc-rs [](https://crates.io/crates/mimc-rs) [](https://github.com/arnaucube/mimc-rs/actions?query=workflow%3ATest)
|
||||
MIMC7 hash implementation in Rust, a zkSNARK friendly hash function.
|
||||
|
||||
https://eprint.iacr.org/2016/492.pdf
|
||||
|
||||
@@ -20,7 +20,7 @@ fn criterion_benchmark(c: &mut Criterion) {
|
||||
big_arr.push(b2.clone());
|
||||
let mimc7 = Mimc7::new();
|
||||
|
||||
c.bench_function("hash", |b| b.iter(|| mimc7.hash(big_arr.clone()).unwrap()));
|
||||
c.bench_function("hash", |b| b.iter(|| mimc7.hash(big_arr.clone())));
|
||||
}
|
||||
|
||||
criterion_group!(benches, criterion_benchmark);
|
||||
|
||||
@@ -90,9 +90,6 @@ fn main() {
|
||||
println!(" {:?},", c.cts[i].to_string());
|
||||
}
|
||||
println!("];");
|
||||
println!("let r: Fr = Fr::from_str(");
|
||||
println!(" {:?},", c.r.to_string());
|
||||
println!(").unwrap();");
|
||||
println!("let n_rounds: i64 = {:?};", c.n_rounds);
|
||||
}
|
||||
|
||||
|
||||
21
src/lib.rs
21
src/lib.rs
@@ -9,7 +9,6 @@ use ff::*;
|
||||
pub struct Fr(FrRepr);
|
||||
|
||||
pub struct Constants {
|
||||
r: Fr,
|
||||
n_rounds: i64,
|
||||
cts: Vec<Fr>,
|
||||
}
|
||||
@@ -109,10 +108,6 @@ pub fn load_constants() -> Constants {
|
||||
"18979889247746272055963929241596362599320706910852082477600815822482192194401",
|
||||
"13602139229813231349386885113156901793661719180900395818909719758150455500533",
|
||||
];
|
||||
let r: Fr = Fr::from_str(
|
||||
"21888242871839275222246405745257275088548364400416034343698204186575808495617",
|
||||
)
|
||||
.unwrap();
|
||||
let n_rounds: i64 = 91;
|
||||
|
||||
let mut cts: Vec<Fr> = Vec::new();
|
||||
@@ -121,7 +116,6 @@ pub fn load_constants() -> Constants {
|
||||
cts.push(n);
|
||||
}
|
||||
Constants {
|
||||
r: r,
|
||||
n_rounds: n_rounds,
|
||||
cts: cts,
|
||||
}
|
||||
@@ -159,14 +153,13 @@ impl Mimc7 {
|
||||
t.add_assign(&k);
|
||||
t.add_assign(&self.constants.cts[i]);
|
||||
}
|
||||
let mut t5 = t.clone();
|
||||
t5.mul_assign(&t);
|
||||
t5.mul_assign(&t);
|
||||
t5.mul_assign(&t);
|
||||
t5.mul_assign(&t);
|
||||
t5.mul_assign(&t);
|
||||
t5.mul_assign(&t);
|
||||
h = t5.clone();
|
||||
let mut t2 = t.clone();
|
||||
t2.square();
|
||||
let mut t7 = t2.clone();
|
||||
t7.square();
|
||||
t7.mul_assign(&t2);
|
||||
t7.mul_assign(&t);
|
||||
h = t7.clone();
|
||||
}
|
||||
h.add_assign(&k);
|
||||
h
|
||||
|
||||
Reference in New Issue
Block a user