mirror of
https://github.com/logos-storage/logos-storage-proofs.git
synced 2026-01-05 23:13:05 +00:00
Basic benchmarking script Added benchmarks for groth16 base of benches.rs Update README.md (#2) * Update README.md * fix tests running example --------- Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com> adding CI build (#4) adding initial CI build for circuits rework with poseidon (#3) * rework with poseidon * adding main template * adding todo * remove mimc Ark circom and rust ffi (#5) * wip rust ffi * proper test component instantiation * adding quick&dirty poseidon implementation * update gitignode * gitignore * adding rust circuit tests * gitignore * rename * add storer tests * move utils under circuit_tests * fix storage proofs * wip: ffi * instantiate storer * enable ark-serialize * delete js tests * update CI to run cargo tests * keep the artifacts dir * update .gitignore * build circuits * remove package json * place built circuits in correct dirs * update gitignore * remove node * fix ci * updating readme * storageproofs.rs to storage_proofs.rs * flatten tests chunks by default * add ffi * fix digest * minor fixes for ffi * fix storer test * use random data for chunks * debug optimizations to speed witness generation * clippy & other lint stuff * add back missing unsafe blocks * release mode disables constraint checks * fix ffi * fix hashes serialization * make naming more consistent * add missing pragma * use correct circuits * add todo * add clarification to readme * silence unused warning * include constants file into exec * remove unused imports extract poseidon to it's own package (#8) * extract poseidon to it's own package * move license to the bottom
67 lines
2.0 KiB
Rust
67 lines
2.0 KiB
Rust
use std::fs::File;
|
|
|
|
use ark_bn254::{Bn254, Fr};
|
|
use ark_circom::{read_zkey, CircomBuilder, CircomConfig};
|
|
use ark_groth16::{
|
|
create_random_proof as prove, generate_random_parameters, prepare_verifying_key, verify_proof,
|
|
Proof, ProvingKey,
|
|
};
|
|
use ark_serialize::{CanonicalDeserialize, CanonicalSerialize, Read};
|
|
use ark_std::rand::rngs::ThreadRng;
|
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
use ruint::aliases::U256;
|
|
use codex_storage_proofs::storage_proofs::{StorageProofs};
|
|
|
|
|
|
// Functions for benchmarking
|
|
fn bench_prove(c: &mut Criterion) {
|
|
let wtns = "./witness.wtns";
|
|
let r1cs = "./storer_test.r1cs";
|
|
let zkey = Some("./circuit_0001.zkey".to_string());
|
|
let mut sp = StorageProofs::new(wtns.to_string(), r1cs.to_string(), zkey);
|
|
let chunks: &[U256] = &[];
|
|
let siblings: &[U256] = &[];
|
|
let hashes: &[U256] = &[];
|
|
let path: &[i32] = &[];
|
|
let root = U256::default();
|
|
let salt = U256::default();
|
|
let mut proof_bytes = Vec::new();
|
|
let mut public_inputs_bytes = Vec::new();
|
|
|
|
c.bench_function("StorageProofs prove", |b| {
|
|
b.iter(|| {
|
|
black_box(
|
|
sp.prove(
|
|
chunks,
|
|
siblings,
|
|
hashes,
|
|
path,
|
|
root,
|
|
salt,
|
|
&mut proof_bytes,
|
|
&mut public_inputs_bytes,
|
|
)
|
|
.unwrap(),
|
|
)
|
|
})
|
|
});
|
|
}
|
|
|
|
fn bench_verify(c: &mut Criterion) {
|
|
let wtns = "./witness.wtns";
|
|
let r1cs = "./storer_test.r1cs";
|
|
let zkey = Some("./circuit_0001.zkey".to_string());
|
|
let mut sp = StorageProofs::new(wtns.to_string(), r1cs.to_string(), zkey);
|
|
let proof_bytes: &[u8] = &[];
|
|
let public_inputs: &[u8] = &[];
|
|
|
|
c.bench_function("StorageProofs verify", |b| {
|
|
b.iter(|| {
|
|
black_box(sp.verify(proof_bytes, public_inputs).unwrap());
|
|
})
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, bench_prove, bench_verify);
|
|
criterion_main!(benches);
|