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).