Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
655783c
zkWHIR 3.0 : Updated protocols for whir round integration and added m…
ocdbytes May 25, 2026
e6f9c3e
wip: introduce buffer ops trait and cpu buffer
zkfriendly Jun 2, 2026
3d284a9
feat: buffer abstraction with basic interface and cpu buffer implemen…
zkfriendly Jun 3, 2026
7f4dd42
feat: wire irs commit path to buffer
zkfriendly Jun 3, 2026
ee1b207
wip: integrate buffer abstraction in prove and sumcheck
zkfriendly Jun 3, 2026
595b19d
chore: add temp ignore notes
zkfriendly Jun 3, 2026
c09d54c
refactor: remove transcript interactions from buffer design
zkfriendly Jun 10, 2026
d54e9b1
refactor: use active buffer instead hardcoded CpuBuffer
zkfriendly Jun 10, 2026
23a408a
wip: metal buffer backend
zkfriendly Jun 10, 2026
f020e81
wip: metal buffer refactor and minor changes
zkfriendly Jun 11, 2026
dfddb0e
feat: add experimental Metal backend
zkfriendly Jun 15, 2026
1cfda8c
rebase and merge commit
ocdbytes Jun 15, 2026
2ff88f4
wip: rs interface
zkfriendly Jun 16, 2026
bf57962
feat: add merklize to BufferOps
zkfriendly Jun 16, 2026
9f29bb2
refactor: change trait bound from Clone to Copy for Config implementa…
zkfriendly Jun 16, 2026
b55662d
feat: use ActiveBuffer in basecase
zkfriendly Jun 17, 2026
9b8a9b9
feat: use ActiveBuffer in code switch
zkfriendly Jun 17, 2026
0f5f0dd
feat: add BufferRead and BufferWrite traits
zkfriendly Jun 18, 2026
b08064c
refactor: move buffer abstraction into its own crate
zkfriendly Jun 18, 2026
e5bba9b
refactor: overall code reorganization
zkfriendly Jun 19, 2026
85f44c1
refactor: remove experimental Metal backend
zkfriendly Jun 19, 2026
72b31c0
refactor: use ActiveBuffer::random
zkfriendly Jun 19, 2026
d68e838
refactor: remove visibility modifiers from CpuBuffer and CpuSlice str…
zkfriendly Jun 19, 2026
03d110a
refactor: use buffer abstraction in mask handling
zkfriendly Jun 24, 2026
f7dbd7f
refactor: use clone instead of mem::take
zkfriendly Jun 24, 2026
fbc6343
refactor: simplify the design by removing slice and mut
zkfriendly Jul 2, 2026
cfbcc52
docs: clarify caller obligations in build_nodes documentation
zkfriendly Jul 2, 2026
cd657aa
chore: run fmt
zkfriendly Jul 2, 2026
676809b
refactor: update lifetime annotations in prove function
zkfriendly Jul 2, 2026
4840519
chore: run nightly fmt
zkfriendly Jul 2, 2026
a3933f5
refactor: change hash_rows function visibility to public
zkfriendly Jul 6, 2026
2b5bec8
feat: add fold_pair_sumcheck_polynomial method to CpuBuffer
zkfriendly Jul 6, 2026
b752e1a
refactor: replace custom Witness struct with merkle_tree::Witness and…
zkfriendly Jul 6, 2026
437e267
refactor: rename as_slice method to to_slice across buffer operations
zkfriendly Jul 6, 2026
70fd192
fix: as_slice -> to_slice in whir_zk
zkfriendly Jul 6, 2026
10aa7d0
Merge pull request #263 from worldfnd/zkfr/buffer-abstraction
zkfriendly Jul 7, 2026
471ca39
merge main into parameter selection branch
zkfriendly Jul 12, 2026
3f019f1
Merge pull request #11 from worldfnd/zkfr/zk-whir-3-3-buffer-abstraction
ocdbytes Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ const-oid = "0.9.6"
arrayvec = "0.7.6"
derive-where = { version = "1.6.0", features = ["safe"] }
ordered-float = { version = "5.1.0", features = ["serde"] }
thiserror = "2.0"

[dev-dependencies]
proptest = "1.0"
Expand Down
27 changes: 16 additions & 11 deletions benches/expand_from_coeff.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
use divan::{black_box, AllocProfiler, Bencher};
use whir::algebra::{fields::Field64, ntt, random_vector};
use whir::{
algebra::{
fields::Field64,
ntt::{Messages, NttEngine, ReedSolomon},
},
buffer::{ActiveBuffer, Buffer, BufferOps},
};

#[global_allocator]
static ALLOC: AllocProfiler = AllocProfiler::system();
Expand Down Expand Up @@ -28,18 +34,17 @@ fn interleaved_rs_encode(bencher: Bencher, case: &(usize, usize, usize)) {
let message_length = 1 << (exp - coset_sz);
let num_messages = 1 << coset_sz;
let mut rng = ark_std::rand::thread_rng();
let coeffs: Vec<Vec<Field64>> = (0..num_messages)
.map(|_| random_vector(&mut rng, message_length))
let coeffs: Vec<ActiveBuffer<Field64>> = (0..num_messages)
.map(|_| ActiveBuffer::random(&mut rng, message_length))
.collect();
(coeffs, expansion, coset_sz)
let engine = NttEngine::<Field64>::new_from_fftfield();
(engine, coeffs, expansion)
})
.bench_values(|(coeffs, expansion, _coset_sz)| {
let coeffs_refs = coeffs.iter().map(|v| v.as_slice()).collect::<Vec<_>>();
black_box(ntt::interleaved_rs_encode(
&coeffs_refs,
&[],
coeffs[0].len() * expansion,
))
.bench_values(|(engine, coeffs, expansion)| {
let coeffs_refs = coeffs.iter().collect::<Vec<_>>();
let messages = Messages::new(&coeffs_refs, coeffs[0].len(), 1);
let masks = ActiveBuffer::from_slice(&[]);
black_box(engine.interleaved_encode(messages, &masks, coeffs[0].len() * expansion))
});
}

Expand Down
3 changes: 3 additions & 0 deletions proptest-regressions/protocols/code_switch.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@
cc d1b11d6a89f5f0e74e62779bf54948e664f6780433d440ac3d977744776ed358 # shrinks to seed = 0, source_size = 3, src_lir = 1, tgt_lir = 1
cc e5c94e6ed6e6d91a8725206056b46ea1c13efd83e0c206e32f20a01929ddf654 # shrinks to seed = 0, source_size = 12, src_lir = 1, tgt_lir = 1
cc c5cdfb9b93481bf4819a4207587a6bf93c85cce8b7e2e999a9478cfc0f78cc0d # shrinks to seed = 0, source_size = 8, src_lir = 2, tgt_lir = 1
cc ba9d37bf3442e60c7741c3593749c9413bb460cc51999b5200e54c9985794559 # shrinks to seed = 0, msg_len = 1, mask_length = 2, ood_samples = 1
cc 582495d0662a9c5083a7bad07e789df2e433d36d9afeb27f21bf593fb2d6a9e0 # shrinks to seed = 0, config = Config { source: Config { embedding: Identity { field: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 } }, num_vectors: 1, vector_size: 4, mask_length: 3, codeword_length: 8, interleaving_depth: 2, matrix_commit: Config { element_type: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 }, num_cols: 2, leaf_hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076, merkle_tree: Config { num_leaves: 8, layers: [LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: ddd248964e320312a66775aee8e16c88c927734be59aca09b7af6deb0ad00e8c }, LayerConfig { hash_id: ddd248964e320312a66775aee8e16c88c927734be59aca09b7af6deb0ad00e8c }, LayerConfig { hash_id: aa802dcdabad8ea8a1430919893b96c30e31ff5734b385999108aa202d27dc12 }, LayerConfig { hash_id: ddd248964e320312a66775aee8e16c88c927734be59aca09b7af6deb0ad00e8c }, LayerConfig { hash_id: aa802dcdabad8ea8a1430919893b96c30e31ff5734b385999108aa202d27dc12 }] } }, johnson_slack: 0.0, in_domain_samples: 1, out_domain_samples: 7, deduplicate_in_domain: true }, target: Config { embedding: Identity { field: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 } }, num_vectors: 1, vector_size: 2, mask_length: 1, codeword_length: 4, interleaving_depth: 1, matrix_commit: Config { element_type: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 }, num_cols: 1, leaf_hash_id: 09459020f451874a1b399819d079632cc0f9263b1486c423173c6e15d8e2d61d, merkle_tree: Config { num_leaves: 4, layers: [LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }] } }, johnson_slack: 0.0, in_domain_samples: 0, out_domain_samples: 1, deduplicate_in_domain: true }, message_mask_length: 3, out_domain_samples: 4 }
cc a0ce555f621161cc430096035f127c5098eebb8670480a5fa39ec36a9b10d4e2 # shrinks to seed = 0, config = Config { source: Config { embedding: Identity { field: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 } }, num_vectors: 1, vector_size: 64, mask_length: 3, codeword_length: 32, interleaving_depth: 4, matrix_commit: Config { element_type: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 }, num_cols: 4, leaf_hash_id: 09459020f451874a1b399819d079632cc0f9263b1486c423173c6e15d8e2d61d, merkle_tree: Config { num_leaves: 32, layers: [LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }] } }, johnson_slack: 0.0, in_domain_samples: 1, out_domain_samples: 10, deduplicate_in_domain: false }, target: Config { embedding: Identity { field: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 } }, num_vectors: 1, vector_size: 16, mask_length: 1, codeword_length: 64, interleaving_depth: 1, matrix_commit: Config { element_type: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 }, num_cols: 1, leaf_hash_id: 09459020f451874a1b399819d079632cc0f9263b1486c423173c6e15d8e2d61d, merkle_tree: Config { num_leaves: 64, layers: [LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }, LayerConfig { hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, LayerConfig { hash_id: 018eaa247cb8957ab1e9fdac885450403c5e7bda1acaaa504e4cc8f2f76bb076 }] } }, johnson_slack: 0.0, in_domain_samples: 3, out_domain_samples: 8, deduplicate_in_domain: true }, message_mask_length: 3, out_domain_samples: 3 }
7 changes: 7 additions & 0 deletions proptest-regressions/protocols/mask_proximity.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 6a96626efcf88c8458e112fceda942463479dfd2637ca89ecaa4c89e49bf8f8e # shrinks to seed = 0, config = Config { c_zk: Config { embedding: Identity { field: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 } }, num_vectors: 2, vector_size: 2, mask_length: 3, codeword_length: 4, interleaving_depth: 1, matrix_commit: Config { element_type: FieldInfo { characteristic: [255, 255, 255, 255, 0, 0, 0, 1], extension_degree: 1 }, num_cols: 2, leaf_hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, merkle_tree: Config { num_leaves: 4, layers: [LayerConfig { hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, LayerConfig { hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }] } }, johnson_slack: 0.05590169943749475, in_domain_samples: 0, out_domain_samples: 1, deduplicate_in_domain: false }, num_masks: 1 }
10 changes: 10 additions & 0 deletions proptest-regressions/protocols/params/basecase.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc b6e8ae0b3e6a9769901e0e0e489da34965bf0a8df7dd049aef66e0541bf10baf # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, decoding_regime: Johnson, target_security_bits: 30, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_size, log_inv_rate) = (1, 1)
cc a2f771fc5031440200810b95ea2d347da895f8eb2e1a87f53fd69ad224287e84 # shrinks to spec = SecuritySpec { mode: Standard, decoding_regime: Johnson, target_security_bits: 30, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_size, log_inv_rate) = (2, 2)
cc f66c89bc700c79bca5f4b7234f1345129962c78e5a2036a6430564f615f19b30 # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, decoding_regime: Johnson, target_security_bits: 30, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_size, log_inv_rate) = (1, 1)
cc 312fec8a96f6f55f5d3c0346bdb85690f23150aadf88888d453041e99b05d414 # shrinks to spec = SecuritySpec { mode: Standard, decoding_regime: Johnson, target_security_bits: 39, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_size, log_inv_rate) = (1, 1)
13 changes: 13 additions & 0 deletions proptest-regressions/protocols/params/code_switch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 7a7df094ea650db7a295d162b75dd9da9b52d1fc36947d2b07df8150cd9d906f # shrinks to spec = SecuritySpec { mode: Standard { unique_decoding: false }, target_security_bits: 80, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 4, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, log_inv_rate = 1, folding_factor = 3, num_vars = 4
cc b42c982074a04c7110df07cf00f45156607be547e176b1ddd5f9d994ad491ddb # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 80, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 4, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, log_inv_rate = 1, folding_factor = 3, num_vars = 4
cc eaf09a2b6bdffa86026264679f008326498ca800260dd2f17d4370df9fb3f801 # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 80, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 4, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, log_inv_rate = 1, folding_factor = 3, num_vars = 4
cc 3887a5fa698c99109e8262e843dbd24ea94b9c9d420791e4520b5c9211a3eca0 # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 100, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 4, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, (log_inv_rate, folding_factor, num_vars) = (3, 2, 7)
cc b3e128084f721e6f43e263e05acf2e2de6fcd05dccf3811f063eeb0b63d78f8e # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 47, max_pow_bits: Some(15), hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_inv_rate, folding_factor, num_vars) = (3, 2, 4)
cc b71da9002ceac9e4a74af097a7b087557a5b916fe8da47e39c4682375d749f88 # shrinks to spec = SecuritySpec { mode: Standard, decoding_regime: Johnson, target_security_bits: 50, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_inv_rate, folding_factor, num_vars) = (1, 2, 4)
cc 1981509d857e56772dd4a79f8692619e968891aa3d84576ea1857f6d9a484a2d # shrinks to spec = SecuritySpec { mode: Standard, decoding_regime: Johnson, target_security_bits: 50, pow_budget: Forbidden, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, (log_inv_rate, folding_factor, num_vars) = (1, 2, 4)
7 changes: 7 additions & 0 deletions proptest-regressions/protocols/params/derive.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 104921a4117ed8255308c1ea5d3e12c72356ef72ef0d93fc0f24ed29f93fdd3a # shrinks to tuning = TuningSpec { vector_size: 32, starting_log_inv_rate: 3, folding_factor: Constant(1) }
8 changes: 8 additions & 0 deletions proptest-regressions/protocols/params/irs_commit.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 0b6dd03179c9a4e38b29b34b241b88fba69348a2c8938af7253314b7035bea82 # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 80, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 4, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 16, log_inv_rate: 1, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }, out_domain = 0, seed = 0
cc 7e49f7a2d53f55cfa2f09114d17ab4123678b45ddf69e0cfbc646b246de2f042 # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 80, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c }, ctx = RoundContext { vector_size: 128, log_inv_rate: 2, folding_factor: 2 }, out_domain = 11
12 changes: 12 additions & 0 deletions proptest-regressions/protocols/params/sumcheck.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Seeds for failure cases proptest has generated in the past. It is
# automatically read and these particular cases re-run before any
# novel cases are generated.
#
# It is recommended to check this file in to source control so that
# everyone who runs the test benefits from these saved cases.
cc 0ffdc71948ed0315f4cf55fb8f2dd25bf71f7e41f53cd4fe35ee9da6fb125a20 # shrinks to spec = SecuritySpec { mode: Standard { unique_decoding: false }, target_security_bits: 86, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 3, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 32, log_inv_rate: 2, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
cc e8ab6549772cf6bf4c3af116ebcba3dbf295ffbe2aee4a94be7df4b9f45d61ec # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 91, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 3, max_pow_bits: Some(10), hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 16, log_inv_rate: 1, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
cc 8c4300cc375640956f81e9da5aef9ea11ef476ddc4dd253dc560afa07609262d # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 98, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 3, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 16, log_inv_rate: 1, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
cc 8ea40f13c63b4c0021386369ce698a5d9289381a39dc85db43d2d69b9b4877bb # shrinks to spec = SecuritySpec { mode: Standard { unique_decoding: false }, target_security_bits: 88, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 3, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 16, log_inv_rate: 3, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
cc f1dca600886474c74d857c547baea0c2b4faf45b2946036f21a008106396eb1c # shrinks to spec = SecuritySpec { mode: Standard { unique_decoding: false }, target_security_bits: 80, vector_size: 256, starting_log_inv_rate: 1, initial_folding_factor: 4, folding_factor: 3, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 256, log_inv_rate: 3, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
cc 36d0f5929e8099fa8644b0511229cf11634e5a7a66d99c06099c304f5f7a8c6e # shrinks to spec = SecuritySpec { mode: ZeroKnowledge, target_security_bits: 47, max_pow_bits: None, hash_id: 03e01749ebcc0477924254eb482066b864a8dd4d77252464ca6f5b6f5cc05b4c, _embedding: PhantomData<whir::algebra::embedding::Identity<ark_ff::fields::models::fp::Fp<ark_ff::fields::models::fp::montgomery_backend::MontBackend<whir::algebra::fields::FConfig64, 1>, 1>>> }, ctx = RoundContext { round_index: 0, vector_size: 128, log_inv_rate: 4, folding_factor: 1, prev_round_in_domain_samples: 0, prev_round_query_error: 0.0 }
Loading