Skip to content

Commit 34af688

Browse files
Update readme (#738)
* Update readme * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md --------- Co-authored-by: MauroFab <maurotoscano2@gmail.com>
1 parent 5b771ee commit 34af688

File tree

1 file changed

+56
-10
lines changed

1 file changed

+56
-10
lines changed

README.md

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
11
# LambdaWorks
2-
From the heights of these towers of fields, forty centuries of mathematics look down on us. The library for kids who wanna learn how to do STARKs, SNARKs and learn other cryptographic stuff too.
32

4-
<div>
3+
The library for kids who wanna learn how to do STARKs, SNARKs and learn other cryptographic stuff too.
4+
5+
> From the heights of these towers of fields, forty centuries of mathematics look down on us.
6+
7+
This library provides efficient implementation of cryptographic primitives used to build proving systems. Along with it, many backends for proving systems are shipped, and compatibility with different frontends is supported.
8+
9+
- [Our vision on ZKP](https://blog.lambdaclass.com/transforming-the-future-with-zero-knowledge-proofs-fully-homomorphic-encryption-and-new-distributed-systems-algorithms/)
10+
- [Lambda Crypto Doctrine](https://blog.lambdaclass.com/lambda-crypto-doctrine/)
511

12+
## Table of contents
13+
<div>
14+
<!-- TOC -->
15+
16+
- [LambdaWorks](#lambdaworks)
17+
- [Documentation](#documentation)
18+
- [List of features](#list-of-features)
19+
- [Main crates](#main-crates)
20+
- [Crypto](#crypto)
21+
- [Examples - mini apps](#examples---mini-apps)
22+
- [Exercises and Challenges](#exercises-and-challenges)
23+
- [Why did we build lambdaworks](#why-did-we-build-lambdaworks)
24+
- [Additional tooling usage](#additional-tooling-usage)
25+
- [Fuzzers](#fuzzers)
26+
- [Documentation building](#documentation-building)
27+
- [📊 Benchmarks](#-benchmarks)
28+
- [📚 References](#-references)
29+
30+
<!-- /TOC -->
631
[![Telegram Chat][tg-badge]][tg-url]
732
[![codecov](https://img.shields.io/codecov/c/github/lambdaclass/lambdaworks)](https://codecov.io/gh/lambdaclass/lambdaworks)
833

@@ -14,6 +39,7 @@ From the heights of these towers of fields, forty centuries of mathematics look
1439
## [Documentation](https://lambdaclass.github.io/lambdaworks)
1540

1641
## List of features
42+
1743
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.
1844

1945
List of symbols:
@@ -35,8 +61,8 @@ List of symbols:
3561
| BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | | | |
3662
| BLS12-377 | 🏗️ | :heavy_check_mark: | | :heavy_check_mark: | |
3763
| BN-254 | :x: | :heavy_check_mark: | | | |
38-
| Pallas | 🏗️ | :heavy_check_mark: | | | |
39-
| Vesta | 🏗️ | :heavy_check_mark: | | | |
64+
| Pallas | :heavy_check_mark: | :heavy_check_mark: | | | |
65+
| Vesta | :heavy_check_mark: | :heavy_check_mark: | | | |
4066
| Bandersnatch | 🏗️ | :heavy_check_mark: | | | |
4167
| **STARKs** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
4268
| STARK Prover | :heavy_check_mark: | :x: | | :x: | |
@@ -58,16 +84,26 @@ List of symbols:
5884
| Protostar | :x: | | | | |
5985
| Protogalaxy | :x: | | | | |
6086

87+
Additionally, provers are compatible with the following frontends and VMs:
6188

62-
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.
63-
64-
So, we decided to build our library, focusing on performance, with clear documentation and developer-focused. Our core team is a group of passionate people from different backgrounds and different strengths; we think that the whole is greater than just the addition of the parts. We don't want to be a compilation of every research result in the ZK space. We want this to be a library that can be used in production, not just in academic research. We want to offer developers the main building blocks and proof systems so that they can build their applications on top of this library.
89+
| Backend | Frontend | Status |
90+
|---------|----------|--------|
91+
| Groth16 | Arkworks | :heavy_check_mark: |
92+
| Groth16 | Gnark | :x: |
93+
| Groth16 | Circom | 🏗️ |
94+
| Plonk | Gnark | 🏗️ |
95+
| Plonk | Noir | :x: |
96+
| Stark | Winterfell | :heavy_check_mark: |
97+
| Stark | Miden | :heavy_check_mark: |
98+
| Stark | Cairo | :heavy_check_mark: |
6599

100+
This can be used in a multi prover setting for extra security, or as a standalone to be used with Rust.
66101

67102
## Main crates
68103

69104
- [Math](https://github.com/lambdaclass/lambdaworks/tree/main/math)
70105
- [Crypto primitives](https://github.com/lambdaclass/lambdaworks/tree/main/crypto)
106+
- [STARK Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/stark)
71107
- [Plonk Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/plonk)
72108
- [Cairo Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/cairo)
73109
- [Groth 16](https://github.com/lambdaclass/lambdaworks/tree/main/provers/groth16)
@@ -77,6 +113,7 @@ If you are interested in proving Cairo programs, use the Cairo Prover CLI.
77113
### Crypto
78114
- [Elliptic curves](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/elliptic_curve)
79115
- [Multiscalar multiplication](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/msm)
116+
- [Hashes](https://github.com/lambdaclass/lambdaworks/tree/main/crypto/src/hash)
80117

81118
Finite Field crate fully supports no-std with `no-default-features`
82119

@@ -87,6 +124,9 @@ Both Math and Crypto support wasm with target `wasm32-unknown-unknown` by defaul
87124

88125
## Exercises and Challenges
89126
- [Lambdaworks exercises and challenges](https://github.com/lambdaclass/lambdaworks_exercises/tree/main)
127+
- [Roadmap for Sparkling Water Bootcamp](https://github.com/lambdaclass/sparkling_water_bootcamp/blob/main/README.md)
128+
129+
## Citing Lambdaworks
90130

91131
If you use ```Lambdaworks``` libraries in your research projects, please cite them using the following template:
92132

@@ -99,9 +139,15 @@ If you use ```Lambdaworks``` libraries in your research projects, please cite th
99139
}
100140
```
101141

102-
### Gadgets
142+
## Why we built Lambdaworks
143+
144+
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.
145+
146+
So, we decided to build our library, focusing on performance, with clear documentation and developer-focused. Our core team is a group of passionate people from different backgrounds and different strengths; we think that the whole is greater than just the addition of the parts. We don't want to be a compilation of every research result in the ZK space. We want this to be a library that can be used in production, not just in academic research. We want to offer developers the main building blocks and proof systems so that they can build their applications on top of this library.
147+
148+
## Additional tooling usage
103149

104-
## Fuzzers
150+
### Fuzzers
105151

106152
Fuzzers are divided between the ones that use only the CPU, the ones that use Metal, and the ones that use CUDA.
107153

@@ -124,7 +170,7 @@ Run a specific fuzzer from the ones contained in **fuzz/fuzz_targets/** folder w
124170
make run-fuzzer FUZZER=field_from_hex
125171
```
126172

127-
## Documentation
173+
### Documentation building
128174

129175
To serve the documentation locally, first install both [mdbook](https://rust-lang.github.io/mdBook/guide/installation.html) and the [Katex preprocessor](https://github.com/lzanini/mdbook-katex#getting-started) to render LaTeX, then run
130176

0 commit comments

Comments
 (0)