Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time

CI dependency status


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, or for a lighter introduction in this blogpost.

See here for the rust documentation.

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 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.


At the time of this writing:

Proving time

number of gates seconds
2^11 0.6s
2^15 3.3s
2^16 6.3s

Verification time

number of gates seconds
2^15 0.1s
2^16 0.1s

Proof size

number of gates bytes
2^15 4947
2^16 5018


The project is organized in the following way:

  • book/. The mina book, RFCs, and specifications. Available here in HTML.
  • curves/. The elliptic curves we use (for now just the pasta curves).
  • groupmap/. Used to convert elliptic curve elements to field elements.
  • hasher/. Interfaces for mina hashing.
  • kimchi/. Our proof system based on PLONK.
  • poly-commitment/. Polynomial commitment code.
  • poseidon/. Implementation of the poseidon hash function.
  • signer/. Interfaces for mina signature schemes.
  • tools/. Various tooling to help us work on kimchi.
  • turshi/. A Cairo runner written in rust.
  • utils/. Collection of useful functions and traits.


Check if you are interested in contributing to this project.