Commit Graph

365 Commits

Author SHA1 Message Date
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 ed54b80fc9 Increase proof period
In Codex's integration tests we now create real ZK proofs,
which take a bit longer to generate. We therefore need a
period that remains the same while the proof is generated.
2024-02-21 10:34:32 +01:00
Mark Spanbroek e5cb3bc571 verifier: circuit assets for a 5 sample storage proof 2024-02-14 13:33:37 +01:00
Mark Spanbroek 6c9f797f40 Explicit getters for token and config
Implicit getters have slightly different semantics when
it comes to ABI encoding their results.
2024-02-06 12:27:40 +01:00
Mark Spanbroek fb17fb5843 Fix deployment bug in loading zkey hash 2024-01-31 16:52:43 +01:00
Mark Spanbroek 31bbd702c2 Remove contract aliasing; doesn't work
Contract aliasing (specifying a fixed address for a
contract) doesn't work. We're now echoing the
addresses of the deployed contracts instead.
2024-01-31 15:45:01 +01:00
Mark Spanbroek c7b18af7cd Deploy 2 versions of the marketplace on local network
One with the real Groth16 verifier,
and one with a dummy verifier used for testing.
2024-01-31 15:45:01 +01:00
Mark Spanbroek ec803adb3d Test verifier accepts any proof, except all 0 values 2024-01-31 15:45:01 +01:00
Adam Uhlíř 331bc56e8f
feat: zkey hash in marketplace config (#81) 2024-01-30 06:36:27 +01:00
Mark Spanbroek a186cb4045 Formatting 2024-01-25 13:16:49 +01:00
Adam Uhlíř d4c7057fff ci: check formatting 2024-01-25 13:16:49 +01:00
Mark Spanbroek 79d9c43beb Fix marketplace deployment script 2024-01-25 13:08:10 +01:00
Mark Spanbroek 079ac4766c Cleanup verifer.js 2024-01-25 13:08:10 +01:00
Mark Spanbroek 5d2842c69b Deploy verifier with verifier key per network 2024-01-25 13:08:10 +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 65655e3646 Refactor verifier contract: Formatting 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
Mark Spanbroek c0ca508a6b Refactor verifier contract: public input as dynamic array 2024-01-25 13:08:10 +01:00
Mark Spanbroek 39a2d56a63 Refactor verifier contract: verification key as parameter 2024-01-25 13:08:10 +01:00
Mark Spanbroek f2869ff94f Refactor verifier contract: X -> x, Y -> y 2024-01-25 13:08:10 +01:00
Mark Spanbroek d30dff1781 Refactor verifier contract: set verifying key in constructor 2024-01-25 13:08:10 +01:00
Mark Spanbroek ef32ad9c1b Refactor verifier contract: fix typo 2024-01-25 13:08:10 +01:00
Mark Spanbroek 296447724a Refactor verifier contract: extract constants 2024-01-25 13:08:10 +01:00
Mark Spanbroek b2509e4257 Refactor verifier contract: formatting 2024-01-25 13:08:10 +01:00
Mark Spanbroek f3e2186ec2 Update solidity to 0.8.23 2024-01-25 13:08:10 +01:00
Mark Spanbroek 862ea56e8b Formatting 2024-01-25 13:08:10 +01:00
Mark Spanbroek 33614ee218 Calculate public inputs for ZK proof verificition 2024-01-25 13:08:10 +01:00
Mark Spanbroek 1b3b258ccc Conversion between little and big endian 2024-01-25 13:08:10 +01:00
Mark Spanbroek 38411c27ca Move submitProof() function to Marketplace 2024-01-25 13:08:10 +01:00
Mark Spanbroek e6a918fed9 Submit proof as Groth16Proof struct 2024-01-25 13:08:10 +01:00
Mark Spanbroek ae03690d51 Submit proof as field elements, not bytes 2024-01-25 13:08:10 +01:00
Mark Spanbroek 534f8cbf51 Cleanup verifier template 2024-01-25 13:08:10 +01:00
Mark Spanbroek 1af40f1790 Read proof from file in test 2024-01-25 13:08:10 +01:00
Mark Spanbroek bf64de7e50 Update to solidity 0.8.8 2024-01-25 13:08:10 +01:00
Mark Spanbroek 3e3f2307d8 Remove GPL'ed verifier, replace by MIT verifier 2024-01-25 13:08:10 +01:00
Mark Spanbroek 61be76da0e Add preprocessing to generate verification contract 2024-01-25 13:08:10 +01:00
Mark Spanbroek c08e8be8f9 Add verification keys and example proof for local deployment 2024-01-25 13:08:10 +01:00
Mark Spanbroek 6b8d3ca83b MIT licensed version of solidity Groth16 verifier
Copied from 2e9be76932/templates/verifier_original.sol
2024-01-25 13:08:10 +01:00
Mark Spanbroek e1657acdd0 Stub out zk proof verification in marketplace tests 2024-01-25 13:08:10 +01:00
Mark Spanbroek e59f0f961e Submit proofs as array of bytes 2024-01-25 13:08:10 +01:00
Mark Spanbroek d29a259090 Fix linter warnings 2024-01-25 13:08:10 +01:00
Mark Spanbroek 327ae14112 Formatting with prettier 2024-01-25 13:08:10 +01:00
Mark Spanbroek db124ddbd9 Re-arrange marketplace constructor parameters
first configuration, then contracts that we depend on
2024-01-25 13:08:10 +01:00
Adam Uhlíř 0d9b67bb31 feat: verifier integration 2024-01-25 13:08:10 +01:00
Eric b5f33992b6
Increase pointer by 67 blocks each time the period is increased (#75)
* Increase pointer by 67 instead of 64 for each period

Use a prime number to ensure that we don't get cycles
where we're looking at the same hash four periods
from now.

---------

Co-authored-by: Mark Spanbroek <mark@spanbroek.net>
2023-12-15 10:02:03 +11:00