Skip to content

[Sapling] Specify commitment scheme for notes and values #2634

@daira

Description

@daira

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.

Metadata

Metadata

Assignees

Labels

A-circuitArea: zk-SNARK circuitsA-consensusArea: Consensus rulesA-cryptoArea: CryptographyI-SECURITYProblems and improvements related to security.I-performanceProblems and improvements with respect to performanceM-requires-nuA network upgrade is required to implement this.NU1-saplingNetwork upgrade: Sapling-specific taskselliptic curvesprotocol spec

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions