-
Notifications
You must be signed in to change notification settings - Fork 116
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
Ad/IPA uses Fiat-Shamir #244
Conversation
* | ||
* @return true/false depending on if the proof verifies | ||
*/ | ||
static bool reduce_verify(std::shared_ptr<VK> vk, const Proof& proof, const PubInput& pub_input) | ||
static bool reduce_verify(std::shared_ptr<VK> vk, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To follow the idiom established in KZG, we would use a class ipa::VerificationKey
to avoid passing the vk as an argument here.. I see you defined this and tested it but that you don't use it. Apologies if I forgot a discussion on this--did you explain why you chose this approach?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This problem stems from the fact that ipa::VerificationKey
class does not take ownership of SRS
and pippenger_runtime_state
(we have an issue for this here
* TODO(#218)(Adrian): This class should take ownership of the SRS, and handle reading the file from disk. |
ipa::reduce_verify
for MSM unlike other PCSs. These parameter are set by calling a constructor in commitment_key.test.cpp
here. Under this settings, we access these parameters by passing the vk
shared ptr as argument to ipa::reduce_verify
in ipa_test.cpp
here.This was a due point in PR #205, and we decided to go with this keeping this as an issue (#236). In the current PR, we somehow solved the issue with
reduce_prove
by using the transcript. But I could not see a path to resolve it for reduce_verify
. Please let me know if this makes sense. I shall record this in the issue #236.
done by #367 |
Description
This PR mainly add transcript to
ipa
so that it can use the implicit hash function to generate Fiat-Shamir challenges. Followings are the main changes made:aux_challenge
which is computed asaux_challenge = Hash(Commit, challenge, evaluation)
. Thisaux_challenge
is used to generateaux_generator
asaux_generator = srs_element[poly_degree] * aux_challenge
.log(n)
number of round challenges are generated asu_j = Hash(L_j, R_j)
in thej
th round wheren
is the degree of the polynomial.reduce_prove
method. These challenges are accessed from the transcript in thereduce_verify
method.G_vec_local
fromreduce_verify
method as it was unnecessary.mock_manifest
inipa.test.cpp
to test the transcript functionality related only toipa
.Checklist:
/markdown/specs
have been updated.@brief
describing the intended functionality.