shared_types/transcript/
counting_transcript.rs1use std::marker::PhantomData;
5
6use super::TranscriptSponge;
7use crate::Field;
8use itertools::Itertools;
9use std::fmt::Debug;
10
11#[derive(Clone, Default, Debug)]
13pub struct CountingSponge<F: Field + Debug> {
14 counter: usize,
15 _marker: PhantomData<F>,
16}
17
18impl<F: Field + Debug> TranscriptSponge<F> for CountingSponge<F> {
19 fn absorb(&mut self, _elem: F) {}
20
21 fn absorb_elements(&mut self, _elements: &[F]) {}
22
23 fn squeeze(&mut self) -> F {
24 let res = self.counter;
25 self.counter += 1;
26 F::from(res as u64)
27 }
28
29 fn squeeze_elements(&mut self, num_elements: usize) -> Vec<F> {
30 (0..num_elements).map(|_| self.squeeze()).collect_vec()
31 }
32
33 fn absorb_initialization_label(&mut self, _label: &str) {}
34}