EspressoSystems / hyperplonk

MIT License
181 stars 38 forks source link

A question on hyperplonk/src/snark.rs test #149

Open Sophiamer2002 opened 2 months ago

Sophiamer2002 commented 2 months ago

I substituted the 673 line in hyperplonk/src/snark.rs with

let permutation = vec![
    E::ScalarField::from(1u128),
    E::ScalarField::from(2u128),
    E::ScalarField::from(3u128),
    E::ScalarField::from(4u128),
    E::ScalarField::from(5u128),
    E::ScalarField::from(6u128),
    E::ScalarField::from(7u128),
    E::ScalarField::from(0u128),
];

and ran the corresponding test test_hyperplonk_e2e, with the result _verify in line 716 being true. In my understanding, the permutation check shouldn't pass and we should have the result as false. I guess there might be vulnerability in the batch opening part of HyperPlonkSNARK::verify. Please let me know if I made any mistake here. Looking forward to your reply.

chancharles92 commented 2 months ago

Hi @zhenfeizhang , this does seem to be a bad permutation given that the witness is w1 := [0, 1, 2, 3] and w2 := [0^5, 1^5, 2^5, 3^5]. Do you have time to take a look? Thanks!