openvm_stark_sdk/config/
log_up_params.rs1use openvm_stark_backend::{
2 interaction::LogUpSecurityParameters, p3_field::PrimeField32, soundness::SoundnessCalculator,
3};
4use p3_baby_bear::BabyBear;
5
6use crate::config::challenge_field_bits;
7
8const TARGET_LOGUP_SECURITY_BITS: f64 = 100.0;
9const MIN_BABY_BEAR_LOGUP_POW_BITS: usize = 18;
10
11pub fn log_up_security_params_baby_bear_100_bits(
16 log2_pcs_list_size: f64,
17) -> LogUpSecurityParameters {
18 assert!(
19 log2_pcs_list_size.is_finite() && log2_pcs_list_size >= 0.0,
20 "log2_pcs_list_size must be finite and nonnegative"
21 );
22
23 let challenge_field_bits = challenge_field_bits();
24 let max_interaction_count = BabyBear::ORDER_U32;
25 let log_max_message_length = 7;
26
27 let security_without_pow = SoundnessCalculator::logup_soundness(
33 max_interaction_count,
34 log_max_message_length,
35 challenge_field_bits,
36 log2_pcs_list_size,
37 );
38 let pow_bits = ((TARGET_LOGUP_SECURITY_BITS - security_without_pow)
39 .ceil()
40 .max(0.0) as usize)
41 .max(MIN_BABY_BEAR_LOGUP_POW_BITS);
42
43 LogUpSecurityParameters {
44 max_interaction_count,
45 log_max_message_length,
46 pow_bits,
47 }
48}