Skip to content

Commit

Permalink
feat: refactor docs and main readme (#10)
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanpwang authored Dec 16, 2024
1 parent db4b679 commit 83b0d04
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 8 deletions.
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# OpenVM Stark Backend

[Contributor Docs](./docs)
| [Crate Docs](https://docs.openvm.dev/stark-backend)

A modular proof system backend for proving and verifying multi-chip circuits with inter-chip communication.

The backend is designed to be modular and compatible with different proof systems, with a focus on performance and extensibility. The aim is to support different circuit representations and permutation/lookup arguments.

## Crates

- [`openvm-stark-backend`](crates/stark-backend): General purpose STARK proving system with multi-trace and logup support, built on top of Plonky3.
- [`openvm-stark-sdk`](crates/stark-sdk): Low-level SDK for use with STARK backend to generate proofs for specific STARK configurations.

## Security Status

As of December 2024, the STARK backend has not been audited and is currently not recommended for production use. We plan to continue development towards a production-ready release in 2025.

## Acknowledgements

We studied and built upon the work of other teams in our quest to design a modular and performant proving framework.
We would like to thank these teams for sharing their code for open source development:

- [Plonky3](https://github.com/Plonky3/Plonky3): This codebase is built on top of Plonky3, where we have heavily benefited from their modular design at the polynomial IOP level. We extend Plonky3 by providing higher level interfaces for proving multi-chip circuits.
- [Valida](https://github.com/valida-xyz/valida): Valida introduced the exceptionally elegant interactions interface for multi-chip communication via logup permutation arguments. We have found this interface quite well thought out and have built upon and extended it.
- [SP1](https://github.com/succinctlabs/sp1): We learned from SP1's `AirBuilder` designs, and the original design for the `InteractionBuilder` was inspired by them.
- [Stwo](https://github.com/starkware-libs/stwo): We studied Stwo's performant sumcheck implementations and have begun integrating them into our backend.
4 changes: 4 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Contributor Docs

- [STARK Backend](./stark-backend.md)
- [AIR Interactions](./interactions.md)
File renamed without changes.
9 changes: 1 addition & 8 deletions crates/stark-backend/README.md → docs/stark-backend.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ it is not difficult to add one.

Instead, only a special type of RAP is supported: an AIR with Interactions.
An AIR with preprocessed and main trace can be extended to a RAP
with one challenge phase via the [Interactions API](./src/interaction/README.md).
with one challenge phase via the [Interactions API](./interactions.md).

The backend currently has special support for Interactive AIRs, and completely owns
the generation of the trace in the challenge phase for these RAPs -- for reference,
Expand All @@ -84,10 +84,3 @@ To fully support the Interaction API, the verifier also does a final cumulative
sum check. This is done in `MultiTraceStarkVerifier::verify`.
This can be framed as an additional operation to perform on the per-RAP
exposed values after the challenge phase.

## TODO

Codify special verifier instructions for operations that should be performed on
public values and exposed values, in a serializable way.
These instructions should be extended to equality constraints between public values
and trace commitments.

0 comments on commit 83b0d04

Please sign in to comment.