-
Notifications
You must be signed in to change notification settings - Fork 8
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
Implement circomlib-mpc
0.1
#14
Comments
circomlib has not been updated for 2 years, we can keep it as a submodule here and work on circomlib-mpc |
|
I'd love to get more into circom and help out with this issue. Can we put a list together of what "basic functions" we'd like to accomplish for this issue? |
Sure, here's the thing. Within circomlib we can categorize the templates into 2 types: crypto and non crypto. Crypto = template for cryptographic primitives such as ECDSA or Poseidon. Non-crypto = template for scalar-based primitives such as comparators, sign, switcher. For crypto type we have to wait for typing as we need to describe the computation in mod p. For non-crypto type we can divide the templates into two sub-categories as well: binary-based and arithmetic-based. Again the binary-based type we have to wait to typing as we need to describe the computation in mod 2. I think what is left for 0.1 is the arithmetic-based templates that are:
As we support equality check and also comparison in our interpreter, i.e. we just add a gate for the ==, <, >, <=, >= we can just scrap all of the comparators templates. If one write a new circom program for MPC then they can just use the ops directly. The whole point of this issue is to allow one to run MPC with a circom program that was written for zk using the templates above (with the bit decomposition thingy). This issue presents two challenges:
I don't know (if there is and what is) a clean way to solve this. @voltrevo ^^^ |
I think we can push the tricky part to 0.2 (with typing so everything is natural). |
This could be related, ZK vs MPC for division. My idea would be to wrap this in a template says template divide() with input a, b and provide a ZK and an MPC version and the interpreter should find the correct file to point to: e.g. |
So should we perhaps split this issue or keep this one for the 0.1 release (with @voltrevo assigned) and then create a new one for later versions? |
Makes sense, once we have the good integration this should proceed faster. |
Changed to ciromlib-mpc 0.1 |
Implement our version of
circomlib
in order to support basic functions.This is needed due to
circomlib
being done to work with R1CS, not working for execution.The text was updated successfully, but these errors were encountered: