sonobe/src/folding/protogalaxy/traits.rs
src/folding/protogalaxy/traits.rsRaw
1use ark_crypto_primitives::sponge::Absorb;
2use ark_ec::{CurveGroup, Group};
3
4use super::CommittedInstance;
5use crate::transcript::{poseidon::PoseidonTranscript, Transcript};
6use crate::Error;
7
8/// ProtoGalaxyTranscript extends [`Transcript`] with the method to absorb ProtoGalaxy's
9/// CommittedInstance.
10pub trait ProtoGalaxyTranscript<C: CurveGroup>: Transcript<C> {
11 fn absorb_committed_instance(&mut self, ci: &CommittedInstance<C>) -> Result<(), Error> {
12 self.absorb_point(&ci.phi)?;
13 self.absorb_vec(&ci.betas);
14 self.absorb(&ci.e);
15 Ok(())
16 }
17}
18
19// Implements ProtoGalaxyTranscript for PoseidonTranscript
20impl<C: CurveGroup> ProtoGalaxyTranscript<C> for PoseidonTranscript<C> where
21 <C as Group>::ScalarField: Absorb
22{
23}