mirror of
https://github.com/arnaucube/sonobe.git
synced 2026-01-23 12:33:50 +01:00
Onchain decider circuit for Protogalaxy (#145)
* Move r1cs and ccs to standalone folders * Simplify type bounds of SparseMatrixVar * Implement `EquivalenceGadget` trait for `FpVar` and `NonNativeUintVar`. Together with the existing `MatrixGadget` and `VectorGadget`, we can now use the same logic for checking R1CS satisfiability of `R1CSVar` both natively and non-natively. * Simplify trait bounds * Implement `ArithGadget` for `R1CSMatricesVar` and `CCSMatricesVar` * `PedersenGadget::commit` now takes slices as input * Structs for proofs and auxiliary values in protogalaxy * `u` in LCCCS should be `z[0]` * `Inputize` trait * Generic decider circuits * Verifier should check the commitments in committed instances * Update the comments according to the new docs * Fix examples * Add `DeciderEnabledNIFS::fold_group_elements_native` to wrap code for folding commitments * Fix incorrect endian * Format * Get rid of `unwrap` when possible
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use ark_ec::CurveGroup;
|
||||
use ark_ff::Field;
|
||||
use ark_r1cs_std::{boolean::Boolean, groups::GroupOpsBounds, prelude::CurveVar};
|
||||
use ark_r1cs_std::{boolean::Boolean, prelude::CurveVar};
|
||||
use ark_relations::r1cs::SynthesisError;
|
||||
use ark_serialize::{CanonicalDeserialize, CanonicalSerialize};
|
||||
use ark_std::Zero;
|
||||
@@ -194,15 +194,12 @@ impl<C, GC, const H: bool> PedersenGadget<C, GC, H>
|
||||
where
|
||||
C: CurveGroup,
|
||||
GC: CurveVar<C, CF<C>>,
|
||||
|
||||
<C as ark_ec::CurveGroup>::BaseField: ark_ff::PrimeField,
|
||||
for<'a> &'a GC: GroupOpsBounds<'a, C, GC>,
|
||||
{
|
||||
pub fn commit(
|
||||
h: GC,
|
||||
g: Vec<GC>,
|
||||
v: Vec<Vec<Boolean<CF<C>>>>,
|
||||
r: Vec<Boolean<CF<C>>>,
|
||||
h: &GC,
|
||||
g: &[GC],
|
||||
v: &[Vec<Boolean<CF<C>>>],
|
||||
r: &[Boolean<CF<C>>],
|
||||
) -> Result<GC, SynthesisError> {
|
||||
let mut res = GC::zero();
|
||||
if H {
|
||||
@@ -303,7 +300,7 @@ mod tests {
|
||||
|
||||
// use the gadget
|
||||
let cmVar =
|
||||
PedersenGadget::<Projective, GVar, hiding>::commit(hVar, gVar, vVar, rVar).unwrap();
|
||||
PedersenGadget::<Projective, GVar, hiding>::commit(&hVar, &gVar, &vVar, &rVar).unwrap();
|
||||
cmVar.enforce_equal(&expected_cmVar).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user