arnaucube
arnaucube/sonobePublic Self-hosted repository
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}