-
-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Verkle IPA - Incomplete test suite - bugs in prover & verifier #396
Comments
And the first multiproof test is flawed, Fs is of length 256 while the rest is length 1: constantine/tests/t_ethereum_verkle_ipa_primitives.nim Lines 641 to 659 in 9fe5e49
And they should be same length: constantine/constantine/eth_verkle_ipa/multiproof.nim Lines 206 to 215 in 9fe5e49
|
It seems like there is a bug in the IPA proof generation:
This not caught in the test suite because the test suite tests the evaluation but does not compare proofs with other implementations. constantine/tests/t_ethereum_verkle_ipa_primitives.nim Lines 504 to 508 in 9fe5e49
Dumping the proof shows a large amount of zeros that confirm that suspicions Furthermore, the verifier does do 8 rounds constantine/constantine/eth_verkle_ipa/ipa_verifier.nim Lines 70 to 95 in 9fe5e49
which means it mistakenly verifies wrong proofs, which also concords with my first comment about |
* refactor(eth-verkle-ipa): transcript now use a cryptographic sponge-like API * refactor(poly-commitment): rename challenges to opening challenge as 'polynomial opening' is pervasively used. * refactor(poly-commit): +30% kzg parallel perf, add quotient check generalization and evalPoly * misc: bench updates to bench dual scalar mul * misc: generator() * misc: scalarMul, views, batchInv * refactor: Banderwagon subgroup and serialization * refactor: KZG - order evaluation at opening before proof * refactor: IPA prover & verifier, pass verifier test * refactor(ipa): enable IPA Proof consistency test * refactor(ipa): enable end-to-end proof generation and verification * refactor(ipa): sketch implementation of multiproofs [skip ci] * refactor(ipa): cosmetic and support functions * refactor(ipa): commit with debugging - unfortunately #396 is making refactoring too complex * refactor(ipa): delete old implementation, adjust old tests * regression in field exponentiation * chore: imports in msm * refactor(ipa): deserialize -> deserialize_vartime * refactor(ipa): tests are succeeding under AddressSanitizer but failing otherwise, comment them out * refactor(polynimial-commitments): reallow compilation on Nim 1.6 * refactor(polynomial-commitments): reallow compilation on Nim 1.6 - IPA
The test suite for Verkle Tries IPA is incomplete.
We're missing at least:
And all the test vectors implemented here: https://github.com/jsign/verkle-test-vectors
In particular test011 is supposed to to negative testing and verify that multiproofs fail for incorrect inputs: https://github.com/jsign/verkle-test-vectors/blob/735b7d6/crypto/clients/go-ipa/crypto_test.go#L320-L326
but we don't do that
constantine/tests/t_ethereum_verkle_ipa_primitives.nim
Lines 702 to 710 in 9fe5e49
And when checking other evaluation points the test seems to always return true?
The text was updated successfully, but these errors were encountered: