You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: crates/provers/gkr/README.md
+14-12Lines changed: 14 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,8 @@ An implementation of the Goldwasser-Kalai-Rothblum (GKR) Non-Interactive Protoco
4
4
5
5
To help with the understanding of this implementation, we recommend reading our [blog post](https://blog.lambdaclass.com/gkr-protocol-a-step-by-step-example/).
6
6
7
+
**Warning:** This GKR implementation is for educational purposes and should not be used in production. It uses the Fiat-Shamir transform, which is vulnerable to practical attacks in this context (see ["How to Prove False Statments"](https://eprint.iacr.org/2025/118.pdf)).
8
+
7
9
## Overview
8
10
9
11
The GKR Protocol allows a Prover to convince a Verifier that he correctly evaluated an arithmetic circuit on a given input without the Verifier having to perform the entire computation.
@@ -40,13 +42,13 @@ Each layer must have a power-of-two number of gates.
40
42
### Main Functions
41
43
42
44
-`gkr_prove(circuit, input)` - Generate a GKR proof for a circuit evaluation.
43
-
-`gkr_verify(proof, circuit, input)` - Verify a GKR proof with complete input checking.
45
+
-`gkr_verify(proof, circuit, input)` - Verify a GKR proof.
44
46
45
47
### Circuit Construction
46
48
47
-
-`Circuit::new(layers, num_inputs)` - Create a new circuit with specified layersand input count
48
-
-`CircuitLayer::new(gates)` - Create a layer with the given gates
49
-
-`Gate::new(gate_type, inputs)` - Create a gate with type (Add/Mul) and input connections
49
+
-`Circuit::new(layers, num_inputs)` - Create a new circuit with specified layers, gates and number of inputs.
50
+
-`CircuitLayer::new(gates)` - Create a layer with the given gates.
51
+
-`Gate::new(gate_type, inputs_idx)` - Create a gate with type (Add/Mul) and certain input indeces.
50
52
51
53
## Example
52
54
@@ -57,29 +59,29 @@ use lambdaworks_math::field::fields::u64_prime_field::U64PrimeField;
0 commit comments