-
Notifications
You must be signed in to change notification settings - Fork 34
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
Implement Validation Process for Verifying Key Contract #299
Comments
Hi👋🏼 correct me if I'm wrong the scope of this issue is to build the circuit that do the comparison? |
No, not for the circuit. However, it could be a solidity contract if it's possible to evaluate the The scope could also be extended to the entire verification process. The verification function logic already exists here: |
I'm interested in the issue. Can I contribute? |
I saw your PR (#301) @protocolwhisper. First of all, I apologize for not being specific enough in the initial issue description. I'd like to provide more detailed notes on the verification process to clarify things.
One key point: In V1 (master branch), the verification key is located inside the InclusionVerifier, as seen here: summa-solvency/contracts/src/InclusionVerifier.sol Lines 216 to 272 in 23587ad
However, in the V2 (v2 branch), the inclusion verifier contract has been separated, as shown here: https://github.com/summa-dev/summa-solvency/blob/v2/contracts/src/VerifyingKey.sol. Therefore, I recommend modifying the V1 verifier contract generator to use the |
Hello! can i also contribute to this issue? |
Hi! I've been following this issue for a while now, I've opened a PR to modify the contract templates to add a getter method por the verifying key. summa-dev/halo2-solidity-verifier#2 |
The user who wants to verify their proofs on the Summa contract, can access the verifying key contract registered within the Summa contract. However, there is currently no way to ensure that the bytes correctly represent polynomials, permutations, or fixed commitments. As a result, users have no choice but to trust that the proof generated from the publicly known circuit and its verifying keys is correct, without any means to independently verify the verifying key.
Objective: We need a validation process for the verifying key contract that includes commitments, key digest and others.
Feature Description:
This issue proposes implementing a validation process for the
vk_digest
from the registered verifying key contract in the Summa contract, allowing it to be compared with thevk_digest
generated by the user.N_BYTES
andN_CURRENCIES
parameters are required, either by reading the verifying key contract or as provided by the prover.vk_digest
is a hash of the entire text of parameters, which is initiated with the circuit and parameters. The hash process is detailed in this repository - halo2-solidity-verifier.Additional Context:
The verifying key contracts consist of multiple bytes in an assembly block, as shown below:
This issue arose while considering this related issue: Wrong verifying key contract permutation length can be considered valid by validateVKPermutationsLength zBlock-2/summa-solvency#10
The text was updated successfully, but these errors were encountered: