• Stars
    star
    404
  • Rank 106,844 (Top 3 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The proof systems used by Mina

CI dependency status

Kimchi

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.

Performance

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

Organization

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.

Contributing

Check CONTRIBUTING.md if you are interested in contributing to this project.

More Repositories

1

o1js

TypeScript framework for zk-SNARKs and zkApps
TypeScript
509
star
2

snarky

OCaml DSL for verifiable computation
OCaml
494
star
3

zkapp-cli

CLI to create a zkApp (zero-knowledge app) for Mina Protocol
JavaScript
114
star
4

docs2

Docs website for the Mina Protocol.
JavaScript
79
star
5

ocamlbyexample

Learn Ocaml by reading code examples
OCaml
68
star
6

zkapp-resource-kit

This repository is a resource kit contains links to all code, tools, documentation, and learning materials necessary to successfully become a zkApp developer and contributor. Add your projects or findings here!
57
star
7

snarkette

Pure OCaml implementation of the Groth-Maller SNARK verifier (and associated crypto)
OCaml
53
star
8

verkle-tree

Rust
26
star
9

Archive-Node-API

This is a GraphQL server that is built with the intention of exposing information from Mina's Archive Node
TypeScript
17
star
10

snarkyjs-workshop

TypeScript
13
star
11

o1js-bindings

Bindings for o1js to lower layers of the proof system and the Mina transaction logic
JavaScript
10
star
12

ocaml-gen

This crate provides automatic generation of OCaml bindings. Refer to the rustdoc for more information.
Rust
9
star
13

ppx_version

Versioning of types with bin_prot serialization
OCaml
8
star
14

integers_stubs_js

Javascript stubs for the integers library in js_of_ocaml
JavaScript
6
star
15

snarkyjs-examples

TypeScript
5
star
16

anonvote

JavaScript
5
star
17

mina-book

Specifications and documentation for the Mina protocol
5
star
18

snarkyjs-crypto

JavaScript crypto library accompanying snarky
OCaml
5
star
19

mina-lightweight-explorer

Lightweight Mina Explorer
HTML
4
star
20

rfcs

RFCs for everything O(1) Labs
4
star
21

wait-for-mina-network-action

GitHub Action to wait for the Mina network readiness.
TypeScript
4
star
22

sfbw-workshop

Tutorial code for the SFBW zk-SNARK workshop
OCaml
3
star
23

stationary

Static site generator
OCaml
2
star
24

code-review-question

Code review interview question repo
JavaScript
2
star
25

dune-nix

Nix wrapping suitable for multi-package dune repositories
Nix
2
star
26

libsnark-ocaml

C++
1
star
27

mina-web3

TypeScript
1
star
28

eslint-plugin-o1js

ESLint rules for o1js
TypeScript
1
star