Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/valida-xyz/valida
A STARK-based VM focused on code reuse, performance, and modularity
https://github.com/valida-xyz/valida
Last synced: about 1 month ago
JSON representation
A STARK-based VM focused on code reuse, performance, and modularity
- Host: GitHub
- URL: https://github.com/valida-xyz/valida
- Owner: valida-xyz
- License: apache-2.0
- Created: 2023-04-07T23:18:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-15T03:12:51.000Z (7 months ago)
- Last Synced: 2024-05-19T02:08:51.062Z (7 months ago)
- Language: Rust
- Homepage:
- Size: 918 KB
- Stars: 234
- Watchers: 10
- Forks: 36
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-zkvm - valida
- awesome-zkvm - valida
README
# Valida
Valida is a STARK-based virtual machine aiming to improve upon the state of the art in the following categories:
- **Code reuse**: The VM has a RISC-inspired instruction set, simplifying the targeting of conventional programming languages. We are currently developing a backend compiler to compile LLVM IR to the Valida ISA. This will enable proving programs written in Rust, Go, C++, and others, and require minimal to no changes in source code.
- **Prover performance**: The VM is engineered to maximize prover performance. It is compatible with a 31-bit field, is restricted to degree 3 constraints, and has minimal instruction decoding. The VM doesn't contain any general-purpose registers, nor a dedicated stack, and instead operates directly on memory. We also utilize newer lookup arguments to reduce trace overhead involved in cross-chip communication.
- **Extensibility**: The VM is designed to be customizable. It can easily be extended to include an arbitrary number of user-defined instructions. Procedural macros are used to construct the desired machine at compile time, avoiding any runtime penalties.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](https://github.com/valida-xyz/valida-compiler). For instructions on how to build Valida programs, please refer to the README in that repository.## Backend
Valida uses the [Plonky3](https://github.com/Plonky3/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:
```bash
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.