Contributing
While Garble was developed by us at the SINE Foundation for the use in our MPC engine, we would love to see how you end up using Garble and are happy to accept pull requests. Garble is distributed under the MIT license and hosted on GitHub:
The Garble compiler is relatively straightforward and turns a program &str
into a circuit::Circuit
(or aborts with a scan/parse/type error). The different steps and their modules are as follows (with steps 1-4 happening during compile time, step 5 is optional and happens during run time):
scan.rs
splits a program&str
into atoken::Token
sequence.parse.rs
parses atoken::Token
sequence into an untypedast::Program
.check.rs
type-checks an untypedast::Program
, returning a typedast::Program
.compile.rs
converts a well-typedast::Program
into acircuit::Circuit
.eval.rs
executes acircuit::Circuit
with locally supplied inputs, not using any MPC or other privacy-preserving techniques.
You can also reach us at vorstand@sine.foundation.