31 Commits

Author SHA1 Message Date
Mark Spanbroek
53999c74d3 Provide all gas to precompiles
Rationale: subtracting 2000 from the provided gas seems
arbitrary, and doesn't provide any benefits. Whether
verify() fails with an out-of-gas error, or returns
'false', in both cases the proof is not verified.

Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2024-03-13 15:25:59 +01:00
Mark Spanbroek
84eba26f76 Document that group elements are checked by precompiles
Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2024-03-13 15:25:59 +01:00
Mark Spanbroek
c55b34fc76 uint -> uint256
Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2024-03-13 15:25:59 +01:00
Mark Spanbroek
3b6f7b8ec7 Rename _Q -> _R
Using 'r' for the size of the scalar field is
standard practice.

Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2024-03-13 15:25:59 +01:00
Mark Spanbroek
ab1b91fe49 Return false when incorrect amount of public inputs 2024-03-13 15:25:59 +01:00
Mark Spanbroek
bd489c7f9a Groth16Verifier implements its interface 2024-03-13 15:25:59 +01:00
Mark Spanbroek
f9637f192b Rename: vkX -> combination 2024-03-13 15:25:59 +01:00
Mark Spanbroek
a4ce10f4de One less addition 2024-03-13 15:25:59 +01:00
Mark Spanbroek
df58f2d3db Formatting 2024-03-13 15:25:59 +01:00
Mark Spanbroek
576254423e Return false when public inputs are invalid 2024-03-13 15:25:59 +01:00
Mark Spanbroek
d38e0f5954 make functions private 2024-03-13 15:25:59 +01:00
Mark Spanbroek
b676b245d6 Improve argument names 2024-03-13 15:25:59 +01:00
Mark Spanbroek
235f11a863 Primes are named as in EIP-197 2024-03-13 15:25:59 +01:00
Mark Spanbroek
a4777bade5 Reordering, formatting 2024-03-13 15:25:59 +01:00
Mark Spanbroek
c7687c5b83 Remove library 2024-03-13 15:25:59 +01:00
Mark Spanbroek
3840e2bf92 Remove unnecessary if-statement 2024-03-13 15:25:59 +01:00
Mark Spanbroek
949909fd98 Simpify pairing check 2024-03-13 15:25:59 +01:00
Mark Spanbroek
601ed18455 Verifier returns false when one of the operations fails 2024-03-13 15:25:59 +01:00
Mark Spanbroek
c495770679 Pairing check returns boolean success and outcome 2024-03-13 15:25:59 +01:00
Mark Spanbroek
a97a598b0e Add and multiply return bool success 2024-03-13 15:25:59 +01:00
Mark Spanbroek
111ed0826c Rename addition -> add, scalarMul -> multiply 2024-03-13 15:25:59 +01:00
Mark Spanbroek
91388096c1 Fix: size in bytes of input and output were too high 2024-03-13 15:25:59 +01:00
Mark Spanbroek
80dfa41e32 Remove calls to invalid()
Gas estimation seems to work just fine without them?
2024-03-13 15:25:59 +01:00
Mark Spanbroek
f413f1ea64 Represent elements from field F_{p^2} as real + i * imag
Reason: Circom and Ethereum EIP-197 both represent these
elements as arrays of two elements, but they do it in
reverse order of each other. This change makes it explicit
which number is the real part, and which number is the
imaginary part.
2024-02-21 10:42:41 +01:00
Mark Spanbroek
903cdf3541 Refactor verifier contract: formatting 2024-01-25 13:08:10 +01:00
Mark Spanbroek
70b22b241f Refactor verifier contract: remove unnecessary conversions 2024-01-25 13:08:10 +01:00
Mark Spanbroek
676f4fc85e Refactor verifier contract: use structs from Groth16.sol 2024-01-25 13:08:10 +01:00
Mark Spanbroek
dc0c2b7956 Refactor verifier contract: remove dead code 2024-01-25 13:08:10 +01:00
Mark Spanbroek
90c821fb61 Refactor verifier contract: remove unnecessary conversions 2024-01-25 13:08:10 +01:00
Mark Spanbroek
a066b6a007 Refactor verifier contract: fix linter warnings 2024-01-25 13:08:10 +01:00
Mark Spanbroek
6baf80d6f4 Refactor verifier contract: remove preprocessing 2024-01-25 13:08:10 +01:00