From ea9d5cc2a4cfb7b895cb8c0fbec152cf86e21441 Mon Sep 17 00:00:00 2001 From: Mauro Toscano <12560266+MauroToscano@users.noreply.github.com> Date: Thu, 5 Oct 2023 19:01:46 -0300 Subject: [PATCH] Update README.md --- README.md | 100 +++++++++++++++++++++++++++--------------------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 65dbf8bd8..ccf3d3e1c 100644 --- a/README.md +++ b/README.md @@ -14,65 +14,65 @@ From the heights of these towers of fields, forty centuries of mathematics look ## [Documentation](https://lambdaclass.github.io/lambdaworks) ## List of features - Disclaimer: This list contains cryptographic primitives and mathematical structures that we want to support in Lambdaworks. It can be expanded later to include new primitives. If you find there is a mistake or there has been an update in another library, please let us know. List of symbols: - :heavy_check_mark: means the feature is currently supported. -- :hammer: means that the feature is partially implemented or is under active construction. +- 🏗️ means that the feature is partially implemented or is under active construction. - :x: means that the feature is not currently supported. -| Finite Fields | Lambdaworks | Arkworks | Constantine | GNARK | -| -------------- | ------------------ | ------------------ | ----------- | ----- | -| StarkField 252 | :heavy_check_mark: | :heavy_check_mark: | | | -| Mersenne 31 | :hammer: | | | | -| Baby Bear | :hammer: | | | | -| MiniGoldilocks | :hammer: | | | | - -| ZK friendly Hash function | Lambdaworks | Arkworks | Constantine | GNARK | -| ------------------------- | ----------- | ------------------ | ----------- | ----- | -| Poseidon | :hammer: | :heavy_check_mark: | | | -| Pedersen | :hammer: | :heavy_check_mark: | | | -| Rescue Prime XLIX | :x: | | | | - -| Elliptic Curves | Lambdaworks | Arkworks | Constantine | GNARK | -| --------------- | ------------------ | ------------------ | ----------- | ------------------ | -| BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | | | -| BLS12-377 | :hammer: | :heavy_check_mark: | | :heavy_check_mark: | -| BN-254 | :x: | :heavy_check_mark: | | | -| Pallas | :x: | :heavy_check_mark: | | | -| Vesta | :x: | :heavy_check_mark: | | | -| Bandersnatch | :hammer: | :heavy_check_mark: | | | - -| STARKs | Lambdaworks | Arkworks | Constantine | GNARK | -| -------------- | ------------------ | -------- | ----------- | ----- | -| STARK Prover | :heavy_check_mark: | :x: | | :x: | -| CAIRO Prover | :hammer: | :x: | | :x: | +| Finite Fields | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| -------------- | ------------------ | ------------------ | --- | ----- | ----------- | +| StarkField 252 | :heavy_check_mark: | :heavy_check_mark: | | | | +| Mersenne 31 | 🏗️ | | | | | +| Baby Bear | 🏗️ | | | | | +| MiniGoldilocks | 🏗️ | | | | | + +| ZK friendly Hash function | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| ------------------------- | ----------- | ------------------ | --- | ----- | ----------- | +| Poseidon | 🏗️ | :heavy_check_mark: | | | | +| Pedersen | 🏗️ | :heavy_check_mark: | | | | +| Rescue Prime XLIX | :x: | | | | | + +| Elliptic Curves | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| --------------- | ------------------ | ------------------ | --- | ------------------ | ----------- | +| BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | | | | +| BLS12-377 | 🏗️ | :heavy_check_mark: | | :heavy_check_mark: | | +| BN-254 | :x: | :heavy_check_mark: | | | | +| Pallas | :x: | :heavy_check_mark: | | | | +| Vesta | :x: | :heavy_check_mark: | | | | +| Bandersnatch | 🏗️ | :heavy_check_mark: | | | | + +| STARKs | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| ------------ | ------------------ | -------- | --- | ----- | ----------- | +| STARK Prover | :heavy_check_mark: | :x: | | :x: | | +| CAIRO Prover | 🏗️ | :x: | | :x: | | We are currently working to make the CAIRO prover compatible with the Stone Prover -| SNARKs | Lambdaworks | Arkworks | Constantine | GNARK | -| ------- | ----------- | ------------------ | ----------- | ------------------ | -| Groth16 | :x: | :heavy_check_mark: | | :heavy_check_mark: | -| Plonk | :hammer: | :x: | | :heavy_check_mark: | -| Spartan | :x: | :heavy_check_mark: | | | -| Marlin | :x: | :heavy_check_mark: | | | -| GKR | :x: | :heavy_check_mark: | | :heavy_check_mark: | - - -| Polynomial Commitment Schemes | Lambdaworks | Arkworks | Constantine | GNARK | -| ----------------------------- | ------------------ | ------------------ | ----------- | ------------------ | -| FRI | :hammer: | :x: | | :heavy_check_mark: | -| IPA | :x: | :heavy_check_mark: | | | -| Hyrax | :x: | :x: | | | -| KZG10 | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | - -| Folding Schemes | Lambdaworks | Arkworks | Constantine | GNARK | -| --------------- | ----------- | -------- | ----------- | ----- | -| Nova | :x: | | | | -| Supernova | :x: | | | | -| Protostar | :x: | | | | -| Protogalaxy | :x: | | | | +| SNARKs | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| ------- | ----------- | ------------------ | --- | ------------------ | ----------- | +| Groth16 | :x: | :heavy_check_mark: | | :heavy_check_mark: | | +| Plonk | 🏗️ | :x: | | :heavy_check_mark: | | +| Spartan | :x: | :heavy_check_mark: | | | | +| Marlin | :x: | :heavy_check_mark: | | | | +| GKR | :x: | :heavy_check_mark: | | :heavy_check_mark: | | + + +| Polynomial Commitment Schemes | Lambdaworks | Halo2 | Arkworks | GNARK | Constantine | +| ----------------------------- | ------------------ | --- | ------------------ | ------------------ | ----------- | +| FRI | 🏗️ | | :x: | :heavy_check_mark: | | +| IPA | :x: | | :heavy_check_mark: | | | +| Hyrax | :x: | | :x: | | | +| KZG10 | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | | + +| Folding Schemes | Lambdaworks | Arkworks | Halo2 | GNARK | Constantine | +| --------------- | ----------- | -------- | --- | ----- | ----------- | +| Nova | :x: | | | | | +| Supernova | :x: | | | | | +| Protostar | :x: | | | | | +| Protogalaxy | :x: | | | | | + Zero-Knowledge and Validity Proofs have gained a lot of attention over the last few years. We strongly believe in this potential and that is why we decided to start working in this challenging ecosystem, where math, cryptography and distributed systems meet. The main barrier in the beginning was not the cryptography or math but the lack of good libraries which are performant and developer friendly. There are some exceptions, though, like gnark or halo2. Some have nice APIs and are easy to work with, but they are not written in Rust, and some are written in Rust but have poor programming and engineering practices. Most of them don't have support for CUDA, Metal and WebGPU or distributed FFT calculation using schedulers like Dask.