-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Closed
Labels
A-circuitArea: zk-SNARK circuitsArea: zk-SNARK circuitsA-consensusArea: Consensus rulesArea: Consensus rulesA-cryptoArea: CryptographyArea: CryptographyI-SECURITYProblems and improvements related to security.Problems and improvements related to security.I-performanceProblems and improvements with respect to performanceProblems and improvements with respect to performanceM-requires-nuA network upgrade is required to implement this.A network upgrade is required to implement this.NU1-saplingNetwork upgrade: Sapling-specific tasksNetwork upgrade: Sapling-specific taskselliptic curvesprotocol spec
Milestone
Description
We are likely to use Pedersen hashes (#2234) for the Sapling circuit. It is convenient and efficient to reuse the Pedersen hash circuit implementation, and the optimizations worked out for it, for Pedersen commitments. So, I propose we define the note and value commitments for Sapling as PedersenCommitr(x) = PedersenHash(x) + [r] H, for random r uniformly distributed on the Jubjub scalar field. Different generators can be used for each instance of the hash/commitment scheme in order to provide domain separation.
There are some details still to resolve:
- how the generators are chosen (probably by reusing the hash function into the group, GH);
- the Pedersen hash is only collision-resistant for constant-length inputs — we may either decide to fix this, or decide that it isn't a problem because the length is constant for each separated input domain.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-circuitArea: zk-SNARK circuitsArea: zk-SNARK circuitsA-consensusArea: Consensus rulesArea: Consensus rulesA-cryptoArea: CryptographyArea: CryptographyI-SECURITYProblems and improvements related to security.Problems and improvements related to security.I-performanceProblems and improvements with respect to performanceProblems and improvements with respect to performanceM-requires-nuA network upgrade is required to implement this.A network upgrade is required to implement this.NU1-saplingNetwork upgrade: Sapling-specific tasksNetwork upgrade: Sapling-specific taskselliptic curvesprotocol spec