Giter VIP home page Giter VIP logo

jolt's Introduction

Jolt

imgs/jolt_alpha.png

Just One Lookup Table.

Jolt is a zkVM (zero-knowledge virtual machine) for RISC-V, built to be the simplest, fastest, and most extensible general-purpose of its kind. This repository currently contains an implementation of Jolt for the RISC-V 32-bit Base Integer instruction set (RV32I). Contributors are welcome!

The Jolt paper was written by Arasu Arun, Srinath Setty, and Justin Thaler.

Resources

Quickstart

Note

Jolt is in alpha and is not suitable for production use yet.

For developers looking to build using Jolt, check out the Quickstart guide.

For developers looking to contribute to Jolt, follow the instructions below.

Installation

You will need Rust nightly.

If you have rustup installed, you do not need to do anything as it will automatically install the right toolchain and install additional target on the first cargo invocation.

Clone this repo:

git clone [email protected]:a16z/jolt.git

To check if rustup has picked the right version of Rust run rustup show inside the cloned repository.

cd jolt; rustup show.

Build

This repository uses workspaces, and each workspace can be built individually, e.g.

cargo build -p jolt-core

For faster incremental builds, use the build-fast profile:

cargo build --profile build-fast -p jolt-core

Test

Unit and end-to-end tests for jolt-core can be run using the following command:

cargo test -p jolt-core

Examples in the examples directory can be run using e.g.

cargo run --release -p sha2-chain

Performance profiling

Jolt uses tracing_chrome for performance profiling.

To generate a trace, run:

cargo run --profile build-fast -p jolt-core trace --name sha3 --format chrome

Where --name can be sha2, sha3, sha2-chain, or fibonacci. The corresponding guest programs can be found in the examples directory. The benchmark inputs are provided in bench.rs.

The above command will output a JSON file, e.g. trace-1712455107389520.json, which can be viewed in Perfetto.

Acknowledgements

This repository started as a fork of https://github.com/arkworks-rs/spartan. Original Spartan code by Srinath Setty.

Disclaimer

This code is being provided as is. No guarantee, representation or warranty is being made, express or implied, as to the safety or correctness of the code. It has not been audited and as such there can be no assurance it will work as intended, and users may experience delays, failures, errors, omissions or loss of transmitted information. Nothing in this repo should be construed as investment advice or legal advice for any particular facts or circumstances and is not meant to replace competent counsel. It is strongly advised for you to contact a reputable attorney in your jurisdiction for any questions or concerns with respect thereto. a16z is not liable for any use of the foregoing, and users should proceed with caution and use at their own risk. See a16z.com/disclosures for more info.

jolt's People

Contributors

sragss avatar moodlezoup avatar arasuarun avatar ncitron avatar gujustin avatar srinathsetty avatar mmagician avatar huitseeker avatar 0xfuturistic avatar ethan-000 avatar patstiles avatar zhenfeizhang avatar jakzale avatar emlazzarin avatar microsoftopensource avatar spartucus avatar fmhall avatar karmacoma-eth avatar nanne007 avatar tgodden avatar milkey-mouse avatar mw2000 avatar matteomer avatar elefthei avatar jkwoods avatar kubkon avatar dlubarov avatar shekhirin avatar 3for avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.