Skip to main content

sample_shared_field_challenge

Function sample_shared_field_challenge 

Source
pub fn sample_shared_field_challenge<C>(
    transcript: &mut impl Transcript,
    q_star_cfg: &C,
    prime_cfgs: &[C],
) -> Vec<C::Element>
where C: BaseFieldConfig, C::Integer: ConstTranscribable,
Expand description

Sample one shared integer challenge in $[0, q^*)$ from the transcript and return it lifted into each per-family field.

The returned Vec<C::Element> has length prime_cfgs.len(); entry $i$ is the same underlying integer typed in $F_{q_i}$ via that family’s config. Since the integer is < q^* <= q_i, no per-family modular reduction occurs.

Internally this samples a wide [C::Integer] from the transcript and reduces mod $q^$ once. The reduction bias is negligible whenever $q^ \ll \text{C::Integer}$ size (the typical case: a $\sim 2^{60}$-ish prime versus a $\sim 2^{192}$-wide C::Integer).