Skip to content
Prev Previous commit
Next Next commit
README: wrap at 80 chars
  • Loading branch information
dannywillems committed Jun 25, 2025
commit 4ab8208a6ef66ec23dacd75a8f3ffd01e1d38b75
58 changes: 44 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,24 @@

[![dependency status](https://deps.rs/repo/github/o1-labs/proof-systems/status.svg?style=flat-square)](https://deps.rs/repo/github/o1-labs/proof-systems)

This repository contains **kimchi**, a general-purpose zero-knowledge proof system for proving the correct execution of programs.
This repository contains **kimchi**, a general-purpose zero-knowledge proof
system for proving the correct execution of programs.

You can read more about this project on the [Kimchi book](https://o1-labs.github.io/proof-systems), or for a lighter introduction in this [blogpost](https://minaprotocol.com/blog/kimchi-the-latest-update-to-minas-proof-system).
You can read more about this project on the [Kimchi
book](https://o1-labs.github.io/proof-systems), or for a lighter introduction in
this
[blogpost](https://minaprotocol.com/blog/kimchi-the-latest-update-to-minas-proof-system).

[See here for the rust documentation](https://o1-labs.github.io/proof-systems/rustdoc).

## User Warning

This project comes as is. We provide no guarantee of stability or support, as the crates closely follow the needs of the [Mina](<[https://](https://github.com/minaprotocol/mina)>) project.
This project comes as is. We provide no guarantee of stability or support, as
the crates closely follow the needs of the
[Mina](<[https://](https://github.com/minaprotocol/mina)>) project.

If you use this project in a production environment, it is your responsibility to perform a security audit to ensure that the software meets your requirements.
If you use this project in a production environment, it is your responsibility
to perform a security audit to ensure that the software meets your requirements.

## Performance

Expand Down Expand Up @@ -52,7 +59,8 @@ At the time of this writing:

The project is organized in the following way:

- [book/](book/). The mina book, RFCs, and specifications. [Available here in HTML](https://o1-labs.github.io/proof-systems).
- [book/](book/). The mina book, RFCs, and specifications. [Available here in
HTML](https://o1-labs.github.io/proof-systems).
- [curves/](curves/). The elliptic curves we use (for now just the pasta curves).
- [groupmap/](groupmap/). Used to convert elliptic curve elements to field elements.
- [hasher/](hasher/). Interfaces for mina hashing.
Expand All @@ -66,12 +74,14 @@ The project is organized in the following way:

## Contributing

Check [CONTRIBUTING.md](CONTRIBUTING.md) if you are interested in contributing to this project.
Check [CONTRIBUTING.md](CONTRIBUTING.md) if you are interested in contributing
to this project.

## Generate rustdoc locally

An effort is made to have the documentation being self-contained, referring to the mina book for more details when necessary.
You can build the rust documentation with
An effort is made to have the documentation being self-contained, referring to
the mina book for more details when necessary. You can build the rust
documentation with

<!-- This must be the same than the content in .github/workflows/gh-page.yml -->

Expand All @@ -87,16 +97,36 @@ You can visualize the documentation by opening the file `target/doc/index.html`.
<!-- Please update this section if you add more workflows -->

- [CI](.github/workflows/ci.yml).
This workflow ensures that the entire project builds correctly, adheres to guidelines, and passes all necessary tests.
This workflow ensures that the entire project builds correctly, adheres to
guidelines, and passes all necessary tests.
- [Nightly tests with the code coverage](.github/workflows/ci-nightly.yml).
This workflow runs all the tests per scheduler or on-demand, generates and attaches the code coverage report to the job's execution results.
This workflow runs all the tests per scheduler or on-demand, generates and
attaches the code coverage report to the job's execution results.
- [Benchmarks](.github/workflows/benches.yml).
This workflow runs benchmarks when a pull request is labeled with "benchmark." It sets up the Rust and OCaml environments, installs necessary tools, and executes cargo criterion benchmarks on the kimchi crate. The benchmark results are then posted as a comment on the pull request for review.
This workflow runs benchmarks when a pull request is labeled with "benchmark."
It sets up the Rust and OCaml environments, installs necessary tools, and
executes cargo criterion benchmarks on the kimchi crate. The benchmark results
are then posted as a comment on the pull request for review.
- [Deploy Specifications & Docs to GitHub Pages](.github/workflows/gh-page.yml).
When CI passes on master, the documentation built from the rust code will be available by this [link](https://o1-labs.github.io/proof-systems/rustdoc) and the book will be available by this [link](https://o1-labs.github.io/proof-systems).
When CI passes on master, the documentation built from the rust code will be
available by this [link](https://o1-labs.github.io/proof-systems/rustdoc) and
the book will be available by this
[link](https://o1-labs.github.io/proof-systems).
- [MIPS Build and Package](.github/workflows/mips-build.yml)
This workflow runs the assembler and linker on the programs from the OpenMips test suite, and provides a link where you can download the artifacts (recommended if you don't have / can't install the required MIPS tooling). This workflow also runs the o1vm ELF parser on the artifacts to check that our parsing is working. Currently it is run via manual trigger only -- you can find the trigger in the [GitHub actions tab](https://github.com/o1-labs/proof-systems/actions/workflows/mips-build.yml) and the link to the artifacts will appear in logs of the `Upload Artifacts` stage.
This workflow runs the assembler and linker on the programs from the OpenMips
test suite, and provides a link where you can download the artifacts
(recommended if you don't have / can't install the required MIPS tooling).
This workflow also runs the o1vm ELF parser on the artifacts to check that our
parsing is working. Currently it is run via manual trigger only -- you can
find the trigger in the [GitHub actions
tab](https://github.com/o1-labs/proof-systems/actions/workflows/mips-build.yml)
and the link to the artifacts will appear in logs of the `Upload Artifacts`
stage.

## Nix for Dependencies (WIP)

If you have `nix` installed and in particular, `flakes` enabled, you can install the dependencies for these projects using nix. Simply `nix develop .` inside this directory to bring into scope `rustup`, `opam`, and `go` (along with a few other tools). You will have to manage the toolchains yourself using `rustup` and `opam`, in the current iteration.
If you have `nix` installed and in particular, `flakes` enabled, you can install
the dependencies for these projects using nix. Simply `nix develop .` inside
this directory to bring into scope `rustup`, `opam`, and `go` (along with a few
other tools). You will have to manage the toolchains yourself using `rustup` and
`opam`, in the current iteration.