Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use groth16 prover / verifier #4

Closed
HarryR opened this issue Jul 19, 2018 · 3 comments
Closed

Use groth16 prover / verifier #4

HarryR opened this issue Jul 19, 2018 · 3 comments

Comments

@HarryR
Copy link
Owner

HarryR commented Jul 19, 2018

This requires using the ZoKrates fork of libsnark or bellman:

Work needed to support this:

  • change libsnark submodule to the ZoKrates libsnark
  • Push libsnark authors to add Groth16 support
  • Python implementation of Groth16 verifier
  • ^ Solidity
  • in import.cpp and export.cpp add support for r1cs_gg_ppzksnark_zok proof format & VK formats
  • IMO we should support both provers using templated types, so the existing stuff can be re-cast from one prover to another easily.
  • different modules for supporting one or the other? or same module but multiple methods. e.g. libX_groth16.so and libX_default.so or libX.so with prove_groth16 and prove_default ?

If the new one is groth16 the old one is grothN?, what year was his paper put out that specified the method which uses many more pairings.

@Schaeff
Copy link

Schaeff commented Jul 31, 2018

Hey two cents on this:

  • Libsnark does have Groth16, but unfortunately not in a way Ethereum would support due to limitations of the Ethereum pairing. We are working on a modified version which does work with the current precompiles.
  • Bellman doesn't have bn support and would suffer from the same problem above

@HarryR
Copy link
Owner Author

HarryR commented Aug 20, 2018

I have added support for this on the following ethsnarks branch: https://github.com/HarryR/ethsnarks/tree/groth16-eth1

The C++ side is done, some of the Python side is done, need to verify the Python side and then update all the on-chain bits.

But... it's looking possible, pending a more thorough review.

@HarryR
Copy link
Owner Author

HarryR commented Aug 21, 2018

This has been merged.

@HarryR HarryR closed this as completed Aug 21, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants