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
Weighted Inner Product Based Range Proofs #21
Conversation
…dded range-proof benches to assess faster verification.
hi_tag: &[GE], | ||
g: &GE, | ||
h: &GE, | ||
P: &GE, |
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.
the prover is not using P explicitly, I wonder if we should input P to the prover and maybe sanity check the witness against it ?
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.
I think instead of passing P
as a paramter to the prover function, it would be a better idea to let the prove
function compute P
using the witnesses. What do you suggest?
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.
yes, make sense
use Errors::{self, RangeProofError}; | ||
|
||
#[derive(Clone, Debug, Serialize, Deserialize)] | ||
pub struct RangeProofWIP { |
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.
consider adding a statement struct that includes all the g_vec,h_vec,G,H etc... This way the verifier takes a proof and a statement and produce 0/1 .
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.
Done. I have not added the ped_com
(commitments to amounts) in the struct as they need to be generated only by prover using secrets. I hope that is okay.
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.
What I am usually doing is defining a struct for Witness struct for Statement and struct for Proof.
prover gets as input Witness and Statement and output a Proof
verifier : is either a function of the Proof . Or gets Statement and Proof and outputs Result
Implementing range proofs with size 15% shorter than that of the original Bulletproofs protocol using weighted inner product argument introduced in Bulletproofs+ paper.
Write weighted inner product (wip) prover and verifier functions.
Fasten verification using multi-exponentiation in wip.
Scalar power and multiplication optimisations in wip.
Range proof using wip protocol and comparison with Bulletproofs.
Benchmark wip and the associated range proof.