Created by potrace 1.16, written by Peter Selinger 2001-2019 Subrosa

Privacy and formal verification in one single place.

Write programs that utilize Zero-Knowledge Proofs with cloud-scalable throughput.

The Ou Programming Language

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));
}
              

Lian: Compilling and Partitioning

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 More

ppSAT: privacy and satisfiability

Find conflicts between different parties' policies or logistic operations without disclosing any information.

Learn More

Built for developers

Get started building your internal tool in minutes