I am looking for a zk framework that could be used for proving correct execution of programs written in C (or any other high level language) such as:

I know x s.t. SHA-256(x) = y (y is public, x is prover's private input)
or in pseude code:

void compute(_ *prover_input, _ *verifier_input, _ *output){
    *output = sha256(*prover_input) == *verifier_input;

So far I found pepper project which seems pretty close but it lacks the prover's private input part/zero knowledge part.

I also want to compute more functions than sha and combine them in one proof.

  • $\begingroup$ Are you talking about general computation (i.e., any arbitrary program)? $\endgroup$
    – cygnusv
    Jun 9, 2015 at 13:53
  • $\begingroup$ @cygnusv yes, I want general computation, like computing hash functions, encryptions, signatures $\endgroup$
    – otpyrc
    Jun 9, 2015 at 16:11
  • $\begingroup$ Well, Pinocchio can compile C (or at least a sufficiently large subset of it for your purposes) to arithmetic circuits, so what you want is doable in it but may be expensive. $\endgroup$
    – fkraiem
    Jun 10, 2015 at 3:24

1 Answer 1


pepper project does not lack private input functionality. It does support that with exo_compute method. Probably it didn't when you asked the question, but now it does.

Check here for more details about exo_compute. Also, I have implemented in a pull-request the scenario you mentioned where a prover knows the pre-image of a hash function and he/she does not disclose it to the verifier. See here for the source code and here for more details about the PR.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.