Skip to content

Latest commit

 

History

History
70 lines (57 loc) · 2.92 KB

README.md

File metadata and controls

70 lines (57 loc) · 2.92 KB

Provable VM - An Open Source Virtual Machine with ZK-Proof Integration

Overview

Provable VM is an open-source Rust-based virtual machine designed to run a set of instructions while providing cryptographic zero-knowledge proof (ZKP) capabilities. This project leverages advanced ZK-proof libraries like ark-groth16 and Bls12-381 to ensure the integrity and privacy of computational execution. The VM integrates a constraint system that enforces state correctness, making it ideal for secure and verifiable computational tasks.

Key Features:

  • Fully functional virtual machine (VM) with a stack-based instruction set.
  • Integrated zero-knowledge proof system using arkworks.
  • Ability to verify program execution using Groth16 proofs.
  • Cryptographic trace commitment for program execution.
  • Modularized codebase for ease of understanding and contribution.
  • Comprehensive error handling for robust performance.

Getting Started:

Prerequisites:

Installation:

  1. Clone the repository: git clone https://github.com/luishsr/provable-vm.git
  2. Navigate to the project directory: cd provable-vm
  3. Build the project: cargo build
  4. Run tests: cargo test

Usage: To run a program using Provable VM:

  1. Create a program file (e.g., program.prov) with instructions:

  2. Execute the program: cargo run -- program.prov

  3. Generate proofs: Use the integrated proof-generation features to create and verify proofs for program execution.

Directory Structure:

  • src/
    • #main.rs: Entry point of the application.
    • vm.rs: Core virtual machine logic.
    • zk_proof.rs: ZK proof generation and verification logic.
    • program_loader.rs: Utilities to load and parse program files.
    • utils.rs: Shared utilities for the project.
  • examples/: Example program files for the VM.
  • README.md: Documentation for the project.

Contributing:

Contributions are welcome! Please follow the steps below:

  1. Fork the repository on GitHub.
  2. Create a new feature branch: git checkout -b feature-branch-name
  3. Commit your changes: git commit -m "Description of changes"
  4. Push the branch: git push origin feature-branch-name
  5. Submit a pull request.

Credits

This project was created and maintained by Luis Soares. Contributions are welcome!

License:

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgements:

Provable VM utilizes the arkworks framework for cryptographic functionalities and the Rust language for high performance. Special thanks to the open-source community for their contributions to cryptographic research and libraries.

The implementation was inspired by the TinyRAM

Contact:

For questions or support, reach out to the repository maintainers via GitHub issues.