crate-crypto / qesa Goto Github PK
View Code? Open in Web Editor NEWEfficient zero-knowledge arguments in the discrete log setting, revisited
Efficient zero-knowledge arguments in the discrete log setting, revisited
All of the components to create the range proofs protocol are ready.
If the amount of code for the range proof is a lot, then I will switch out the dense matrices for sparse matrices then code it.
This is a general topic.
We have an argument system and not a proof system
This is a general topic.
Currently the dense representation of matrices are being used.
This is in-efficient.
We can either use the traditional sparse matrix representation or we can use the representation listed in the paper.
At the moment, Qesa_Copy is not very intuitive.
A continuous_crs is a {1,2,3,4}
A non-continuous crs is {1,3,5,6}
This is only needed when we plan to implement the shuffle example from the paper.
This is not a necessity, so it can be avoided for now.
The vandemonde_challenge
func in src/math_utils.rs
does not act as commented.
// Creates a vector from the scalar `x`
// contents of vector = <x, x^2, x^3,.., x^n>
// XXX: double check that it is fine to use a vandermonde matrix in regards to testing distributions to
// expand challenges instead of fetching each challenge from the distribution
// so we don't need `n` different challenges
pub fn vandemonde_challenge(mut x: Scalar, n: usize) -> Vec<Scalar> {
let mut challenges: Vec<Scalar> = Vec::with_capacity(n);
for _ in 0..n {
challenges.push(x);
x = x * x;
}
challenges
}
Maybe the code below is suitable?
pub fn vandemonde_challenge(mut x: Scalar, n: usize) -> Vec<Scalar> {
let mut challenges: Vec<Scalar> = Vec::with_capacity(n);
challenges.push(x);
for i in 0..n-1 {
challenges.push(challenges[i] * x);
}
challenges
}
There are numerous places where we use unwrap to decompress a point.
We should return a Result and propagate the error
The interactive version of the inner product argument(NoZK) allows the prover to not require the commitment.
In the interactive version, the verifier generates a random scalar challenge, without any communication with the prover. Therefore, in the non-interactive version, the prover must seed the "hash function" with the statement, in order to generate a shared view with the verifier and retrieve a challenge.
This brings up a design problem; the prover will either need to calculate P
the commitment and add to transcript, P
will need to be passed to the proof creation function or we assume that the caller has added P
to the "hash function"/transcript.
P
the commitmentThis is a viable option. Note that since the prover does not use P
, we would only be generating it to add it to the Merlin transcript.
P
will need to be passed to the proof creation functionThis means that all callers (provers) of NoZK
will need to calculate the intermediate commitments.
-assume that the caller has added P
to the "hash function"/transcript
This seems like the most efficient strategy, as this is how we intend to use it. For protocols that are at the root layer, it would be fruitful to design them so that they can be used by the protocols at the higher levels, the most efficiently.
I'm not sure the meaning of Q: &RistrettoPoint
of create()
and verify()
in lmpa module. It's never used in the function right now?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.