shol'va is a tool for generating zero knowledge proofs of program execution, composed of
- mttn: an instruction-resolution program tracer
- tiny86: a Verilog and Clash trace verifier circuit
Note: shol'va does native tracing X86 Linux programs, and as a result is strictly limited to that architecture.
sholva is built using nix.
It is recommended to use the Determinate Systems installer:
$ curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install$ nix build .#mttnThis builds:
bin/mttn: tracer binarytraces/*.trace.txt: self-test tracing results
Enter a shell with development dependencies:
$ cd mttn
$ nix develop .#mttnManual testing:
# build all the of the test binaries
$ make -C test elfs
# run the mttn self-tests
$ cargo test$ nix build .#tiny86This builds:
circuit/tiny86.blif: synthesized circuit
Enter a shell with development dependencies:
$ cd tiny86
$ nix develop .#tiny86Manual testing:
# test the full Tiny86 circuit test suite
$ make _test-tiny86
# test the Tiny86 circuit Clash components Haskell source
$ make _test-clash
# test the Tiny86 circuit Verilog components
$ make _test-verilog
# test the Tiny86 circuit Verilog components, isolating modules
$ SHOLVA_MODULES="alu syscall" make _test-verilog
# test the manual end-to-end test suite
$ make _test-pipeline$ nix build .#sv_circuitThis builds the sv-compositor binary, which takes a BLIF file (defining a single step of Tiny86)
and trace artifacts as input and yields proof artifacts
(currently, a SIEVE IR0 circuit, public input, and private input) as output.
Enter a shell with development dependencies:
$ cd sv_circuit
$ nix develop .#sv_circuitManual testing (from the development environment):
$ cargo testUses a provided jdk build cross-compiled to 80386.
This research was developed with funding from the Defense Advanced Research Projects Agency (DARPA) under Agreement No. HR001120C0084.
The views, opinions, and/or findings expressed are those of the author(s) and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.
DISTRIBUTION STATEMENT A: Approved for public release, distribution unlimited.
shol'va is licensed under the GNU AGPLv3 License. A copy of the terms can be found in the LICENSE file.