Skip to content

Commit d9c3c04

Browse files
Add Plonky3 in the Readme Table (#1035)
* add plonky3 * add circle for plonky3 * exchange columns hal2 and plonky3 * fix clippy * fix fmt --------- Co-authored-by: jotabulacios <[email protected]>
1 parent 6f03bf1 commit d9c3c04

File tree

10 files changed

+47
-52
lines changed

10 files changed

+47
-52
lines changed

README.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -86,39 +86,39 @@ List of symbols:
8686
- 🏗️ means that the feature is partially implemented or is under active construction.
8787
- :x: means that the feature is not currently supported.
8888

89-
| Finite Fields | Lambdaworks | Arkworks | Halo2 | gnark | Constantine |
90-
| -------------- | ------------------ | ------------------ | -------- | ------------------ | ----------- |
91-
| StarkField 252 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: |
92-
| Mersenne 31 | :heavy_check_mark: | :x: | :x: | :x: | :x: |
93-
| Baby Bear | :heavy_check_mark: | :x: | :x: | :x: | :x: |
94-
| MiniGoldilocks | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: |
95-
| Binary fields | :heavy_check_mark: | :x: | :x: | :x: | :x: |
96-
| **ZK friendly Hash function** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
97-
| Poseidon | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
98-
| Pedersen | 🏗️ | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
99-
| Rescue Prime XLIX | :x: | :x: | :x: | :x: | :x: |
100-
| **Elliptic Curves** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
101-
| BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
102-
| BLS12-377 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: |
103-
| BN-254 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
104-
| Pallas | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
105-
| Vesta | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
106-
| Bandersnatch | 🏗️ | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: |
107-
| secp256k1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
108-
| secq256k1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
109-
| secq256r1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
110-
| **STARKs** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
111-
| STARK Prover | :heavy_check_mark: | :x: | :x: | :x: | :x: |
112-
| Circle STARKs | :x: | :x: | :x: | :x: | :x: |
113-
| **SNARKs** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
114-
| Groth16 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: |
115-
| Plonk | 🏗️ | :heavy_check_mark: | ✔️ | :heavy_check_mark: | :x: |
116-
| GKR | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: |
117-
| **Polynomial Commitment Schemes** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** |
118-
| KZG10 | :heavy_check_mark: | ✔️ | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
119-
| FRI | 🏗️ | :x: | :x: | :heavy_check_mark: | :x: |
120-
| Binius | :x: | :x: | :x: | :x: | :x: |
121-
| Circle FRI | :x: | :x: | :x: | :x: | :x: |
89+
| Finite Fields | Lambdaworks | Arkworks | Plonky3 | gnark | Constantine | Halo2 |
90+
| -------------- | ------------------ | ------------------ | ------------------ | ------------------ | ----------- | ----------- |
91+
| StarkField 252 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x:
92+
| Mersenne 31 | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x:
93+
| Baby Bear | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x:
94+
| MiniGoldilocks | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x:
95+
| Binary fields | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x:
96+
| **ZK friendly Hash function** | **Lambdaworks** | **Arkworks** | **Plonky3** | **gnark** | **Constantine** | **Halo2** |
97+
| Poseidon | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: |
98+
| Pedersen | 🏗️ | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: |
99+
| Rescue Prime XLIX | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: |
100+
| **Elliptic Curves** | **Lambdaworks** | **Arkworks** | **Plonky3** | **gnark** | **Constantine** | **Halo2** |
101+
| BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
102+
| BLS12-377 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: |
103+
| BN-254 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
104+
| Pallas | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
105+
| Vesta | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
106+
| Bandersnatch | 🏗️ | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: |
107+
| secp256k1 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
108+
| secq256k1 | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: |
109+
| secq256r1 | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: |
110+
| **STARKs** | **Lambdaworks** | **Arkworks** | **Plonky3** | **gnark** | **Constantine** | **Halo2** |
111+
| STARK Prover | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: |
112+
| Circle STARKs | 🏗️ | :x: | :heavy_check_mark: | :x: | :x: | :x: |
113+
| **SNARKs** | **Lambdaworks** | **Arkworks** | **Plonky3** | **gnark** | **Constantine** | **Halo2** |
114+
| Groth16 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: |
115+
| Plonk | 🏗️ | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: |
116+
| GKR | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: |
117+
| **Polynomial Commitment Schemes** | **Lambdaworks** | **Arkworks** | **Plonky3** | **gnark** | **Constantine** | **Halo2** |
118+
| KZG10 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
119+
| FRI | 🏗️ | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
120+
| Binius | :x: | :x: | :x: | :x: | :x: | :x: |
121+
| Circle FRI | 🏗️ | :x: | :heavy_check_mark: | :x: | :x: | :x: |
122122

123123
Additionally, provers are compatible with the following frontends and VMs:
124124

crates/crypto/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ license.workspace = true
99

1010
[dependencies]
1111
lambdaworks-math = { workspace = true, features = ["alloc"] }
12-
sha3 = { version = "0.10", default-features = false }
12+
digest = "0.10.7"
13+
sha3 = { version = "0.10.8", default-features = false }
1314
sha2 = { version = "0.10", default-features = false }
1415
# Optional
1516
serde = { version = "1.0", default-features = false, features = [

crates/crypto/src/merkle_tree/backends/field_element.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@ use crate::hash::poseidon::Poseidon;
22

33
use crate::merkle_tree::traits::IsMerkleTreeBackend;
44
use core::marker::PhantomData;
5+
use digest::{Digest, Output};
56
use lambdaworks_math::{
67
field::{element::FieldElement, traits::IsField},
78
traits::AsBytes,
89
};
9-
use sha3::{
10-
digest::{generic_array::GenericArray, OutputSizeUser},
11-
Digest,
12-
};
1310

1411
#[derive(Clone)]
1512
pub struct FieldElementBackend<F, D: Digest, const NUM_BYTES: usize> {
@@ -31,7 +28,7 @@ impl<F, D: Digest, const NUM_BYTES: usize> IsMerkleTreeBackend
3128
where
3229
F: IsField,
3330
FieldElement<F>: AsBytes + Sync + Send,
34-
[u8; NUM_BYTES]: From<GenericArray<u8, <D as OutputSizeUser>::OutputSize>>,
31+
[u8; NUM_BYTES]: From<Output<D>>,
3532
{
3633
type Node = [u8; NUM_BYTES];
3734
type Data = FieldElement<F>;

crates/crypto/src/merkle_tree/backends/field_element_vector.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@ use core::marker::PhantomData;
33
use crate::hash::poseidon::Poseidon;
44
use crate::merkle_tree::traits::IsMerkleTreeBackend;
55
use alloc::vec::Vec;
6+
use digest::{Digest, Output};
67
use lambdaworks_math::{
78
field::{element::FieldElement, traits::IsField},
89
traits::AsBytes,
910
};
10-
use sha3::{
11-
digest::{generic_array::GenericArray, OutputSizeUser},
12-
Digest,
13-
};
1411

1512
#[derive(Clone)]
1613
pub struct FieldElementVectorBackend<F, D: Digest, const NUM_BYTES: usize> {
@@ -32,7 +29,7 @@ impl<F, D: Digest, const NUM_BYTES: usize> IsMerkleTreeBackend
3229
where
3330
F: IsField,
3431
FieldElement<F>: AsBytes,
35-
[u8; NUM_BYTES]: From<GenericArray<u8, <D as OutputSizeUser>::OutputSize>>,
32+
[u8; NUM_BYTES]: From<Output<D>>,
3633
Vec<FieldElement<F>>: Sync + Send,
3734
{
3835
type Node = [u8; NUM_BYTES];

crates/provers/gkr/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ lambdaworks-crypto = { workspace = true }
1111
lambdaworks-sumcheck = { workspace = true }
1212
thiserror = "1.0"
1313
blake2 = "0.10"
14-
sha3 = "0.10"
14+
sha3 = "0.10.8"
1515
digest = "0.10"
1616

1717

crates/provers/groth16/arkworks-adapter/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ repository.workspace = true
1010
[dependencies]
1111
lambdaworks-math.workspace = true
1212
lambdaworks-groth16.workspace = true
13-
ark-r1cs-std = { version = "^0.3.1" }
13+
ark-r1cs-std = { version = "0.4.0" }
1414
ark-bls12-381 = { version = "0.4.0" }
15-
ark-ff = { version = "^0.4.2" }
16-
ark-relations = { version = "^0.4.0" }
15+
ark-ff = { version = "0.4.2" }
16+
ark-relations = { version = "0.4.0" }
1717
ark-serialize = { version = "0.4.2" }
1818
num-bigint = { version = "0.4", default-features = false }
1919
rand = "0.8.5"

crates/provers/plonk/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ lambdaworks-crypto.workspace = true
1111

1212
serde = { version = "1.0", features = ["derive"] }
1313
serde_json = "1.0"
14-
sha3 = { version = "0.10", default-features = false }
14+
sha3 = { version = "0.10.8", default-features = false }
1515
sha2 = { version = "0.10", default-features = false }

crates/provers/stark/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ rand = "0.8.5"
2121
thiserror = "1.0.38"
2222
log = "0.4.17"
2323
bincode = { version = "2.0.1", features = ["serde"] }
24-
sha3 = "0.10.6"
24+
sha3 = "0.10.8"
2525
serde = { version = "1.0", features = ["derive"] }
2626
serde_json = "1.0"
2727
num-integer = "0.1.45"

crates/provers/winterfell_adapter/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ miden-air = { package = "miden-air", version = "0.7", default-features = false }
2121
miden-core = { package = "miden-core", version = "0.7", default-features = false }
2222
miden-assembly = { package = "miden-assembly", version = "0.7", default-features = false }
2323
miden-processor = { package = "miden-processor", version = "0.7", default-features = false }
24-
sha3 = "0.10"
24+
sha3 = "0.10.8"
2525

2626
[dev-dependencies]
2727
criterion = { version = "0.4", default-features = false }

examples/schnorr-signature/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ repository.workspace = true
99
[dependencies]
1010
lambdaworks-math = { workspace = true }
1111
lambdaworks-crypto = { workspace = true }
12-
sha3 = { version = "0.10", default-features = false }
12+
sha3 = { version = "0.10.8", default-features = false }
1313
rand = "0.8.5"
1414
rand_chacha = "0.3.1"

0 commit comments

Comments
 (0)