Skip to content

Commit 097e64d

Browse files
committed
moved eip to erc
1 parent 1a6b928 commit 097e64d

File tree

2 files changed

+8
-220
lines changed

2 files changed

+8
-220
lines changed

ERCS/eip-7524.md

Lines changed: 0 additions & 212 deletions
This file was deleted.

ERCS/erc-7524.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ The length of the input to $\mathsf{htc}$ is always 65 bytes.
9090

9191
Note that in this scheme, we compute $h$ as the hash of the message and $pk$, not the message and $r$. This is to make our scheme deterministic.
9292

93-
### Signature verification
94-
95-
### Non-ZK
93+
### Signature verification (non-ZK)
9694

9795
********************Note: Non-ZK signature verification is not part of the proposal but relevant for an intuitive understanding of the ZK signature verification.********************
9896

@@ -106,7 +104,9 @@ b. $h^s \cdot \mathsf{nul}^{-c} \stackrel{?}{=} z$
106104
c. $c \stackrel{?}{=} c'$
107105
4. Accept if all of the above is true.
108106

109-
### In ZK
107+
Now we move onto the ZK signature verification specs.
108+
109+
### Version 1: Verifier Optimized
110110

111111
In a situation where there is a verifier who must *not* know the signer's $pk$, but the signer must nevertheless prove that they know $sk$ corresponding to the signature given $m$, a zero-knowledge proof is required.
112112

@@ -130,9 +130,9 @@ It also establishes the following constraints:
130130
- $h^s \cdot \mathsf{nul}^{-c} = z$
131131
- $c = c'$
132132

133-
### Version 2: Computing hashes outside the circuit
133+
### Version 2: Prover Optimized
134134

135-
Currently, SHA-256 hashing operations are particularly expensive with groth16 proofs in the browser. In the context of PLUME, the computation of $c$ is a bottleneck for efficient proof times, so one modification suggested by the Poseidon team was to move this computation outside the circuit in the verifier.
135+
Currently, SHA-256 hashing operations are particularly expensive with zk proofs in the browser. In the context of PLUME, the computation of $c$ is a bottleneck for efficient proof times, so one modification suggested by the Poseidon team was to move this hash computation outside the circuit, into the verifier.
136136

137137
To do this, we make $z$ and $g^r$ public signals in the circuit and update the definition of $c$ to $c = \text{sha256}([\text{nul}, g^r, z])$. The updated protocol is as follows.
138138

@@ -160,7 +160,7 @@ Due to SHA-256 being a native precompile on Ethereum, this operation will still
160160

161161
### Version 3:
162162

163-
There may be a more efficient V3 in the future.
163+
There may be a more efficient V3 in the future, perhaps via removing indifferentiability from hash_to_curve.
164164

165165
## Rationale
166166

@@ -185,7 +185,7 @@ For a few possible simpler algorithm designs that were considered, see blog.aayu
185185

186186
## Reference Implementation
187187

188-
The GitHub repository `plume-sig/zk-nuliifier-sig` contains the reference implementation in several languages including Rust and Javascript. There is a sample PR to Metamask Core as well.
188+
The GitHub repository `plume-sig/zk-nuliifier-sig` contains the reference implementation in several languages including Rust and Javascript. There is a sample PR to Metamask Core as well, and a PR to Taho Core incoming.
189189

190190
## Security Considerations
191191

0 commit comments

Comments
 (0)