Skip to main content

w3f_pcs/aggregation/
merlin.rs

1use ark_ff::PrimeField;
2use ark_serialize::{CanonicalSerialize, Compress};
3use ark_std::vec;
4
5use crate::aggregation::multiple::Transcript;
6use crate::pcs::PCS;
7
8impl<F: PrimeField, CS: PCS<F>> Transcript<F, CS> for merlin::Transcript {
9    fn get_gamma(&mut self) -> F {
10        let mut buf = [0u8; 16];
11        self.challenge_bytes(b"gamma", &mut buf);
12        F::from_random_bytes(&buf).unwrap()
13    }
14
15    fn commit_to_q(&mut self, q: &CS::C) {
16        let mut buf = vec![0; q.serialized_size(Compress::No)];
17        q.serialize_uncompressed(&mut buf).unwrap();
18        self.append_message(b"q", &buf);
19    }
20
21    fn get_zeta(&mut self) -> F {
22        let mut buf = [0u8; 16];
23        self.challenge_bytes(b"zeta", &mut buf);
24        F::from_random_bytes(&buf).unwrap()
25    }
26}