You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 the vk_digest generated by the user.
The validation process should be based on the UnivariateGrandSum circuit known from the GitHub repo.
To initiate the circuit, the N_BYTES and N_CURRENCIES parameters are required, either by reading the verifying key contract or as provided by the prover.
The 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.
The implementation should prioritize UX, ensuring that the comparison process is straightforward and user-friendly.
Additional Context:
The verifying key contracts consist of multiple bytes in an assembly block, as shown below:
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_digestfrom the registered verifying key contract in the Summa contract, allowing it to be compared with thevk_digestgenerated by the user.N_BYTESandN_CURRENCIESparameters are required, either by reading the verifying key contract or as provided by the prover.vk_digestis 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 yAudit/summa-solvency#10