Write programs that utilize Zero-Knowledge Proofs with cloud-scalable throughput.
A high-level programming language that is familiar enough to novices, but also provides advanced features to be exploited by experts.
Learn More#define S 100 #define secparam 128 plocal1 plc1 int[S][S] mmult_plcmx(...) {...} pvt2 int[S] mmult_pvtvec(...) {...} pvt2 int[S] mmult_pubvec(...) {...} void frvlds(pvt1 int [S][S] M, pvt1 int [S][S] M1, pvt1 int [S][S] M2) { /* array of verifier controlled randomness */ pub2 int [S] s = {0}; int t = 0; /* repeat for secparam number of times */ while (t < secparam) { int i = 0; while (i < S) {s[i] = v_rand(0, 1); i = i+1;} /* compute z = (M1 * (M2 * s)) */ pvt2 int[S] w = mmult_pubvec(M2, s); pvt2 int[S] z = mmult_pvtvec(M1, w); /* compute q = (M * s) */ pvt2 int[S] q = mmult_pubvec(M, s); /* check that q and z are the same */ i = 0; while (i < S) { assert (q[i] == z[i]); i = i+1; } t = t+1; } } unit mmult(plc1 int [S][S] M1, plc1 int [S][S] M2) { /* prover locally computes M1 * M2 = M */ plc1 int[S][S] M = mmult_plcmx(M1, M2); return frvlds(commit(M), commit(M1), commit(M2)); }
A toolchain that first compiles the high-level program down to a circuit, and then finds the optimal way to partition that circuit into chunks that are then deployed to available commodity CPUs.
Learn MoreFind conflicts between different parties' policies or logistic operations without disclosing any information.
Learn More