Home

Awesome

Valida

Valida is a STARK-based virtual machine aiming to improve upon the state of the art in the following categories:

Our roadmap also includes implementing fast recursion and continuations to enable massively parallelizable proving of individual program execution.

Interpreter

A standalone binary interpreter is available to execute Valida programs (skipping proof generation), and can be built by running cargo build --release.

For example, the 25th Fibonacci number can be returned by executing the command printf "\x19" | ./target/release/valida basic/tests/data/fibonacci.bin | hexdump.

Tests

A proof of a Fibonacci program execution can be generated and tested for soundness by running cargo test prove_fibonacci.

Compiler

The Valida compiler is hosted separately, and can be found here. For instructions on how to build Valida programs, please refer to the README in that repository.

Backend

Valida uses the Plonky3 toolkit to implement the STARK IOP, and to handle all field and cryptographic operations.

To use a local copy of Plonky3 instead of the pinned version of Plonky3, you can run:

mkdir -p .cargo
for lib in air baby-bear commit challenger dft field fri goldilocks keccak matrix maybe-rayon mds merkle-tree poseidon symmetric uni-stark util
do
echo "patch.\"https://github.com/valida-xyz/Plonky3.git\".p3-$lib.path = \"../Plonky3/$lib\"" >> .cargo/config.toml
done

After adding this configuration, just run cargo build and other cargo commands normally, and they will use your local copy of Plonky3. To revert this configuration change, you can just rm .cargo/config.toml (assuming you have no other configuration in that file that you want to keep).

Contributing

Valida is a community-driven project, and we encourage contributions to both the VM and compiler.

License

The VM, compiler, and constraint generation code are open source, with no code obfuscation. The VM is licensed under the MIT and Apache licenses, while the compiler under the Apache license with LLVM Exceptions.