matter-labs/franklin-crypto

build error

chenhuan14 opened this issue · 2 comments

I want to try the recursive_aggregation function of zksync v1.1., but when I build the branch plonk_gadgets#b72d5cf7 , which is required by the recursive_aggregation_circuit
, it occurs the following errors:

Compiling franklin-crypto v0.0.5 (https://github.com/matter-labs/franklin-crypto?branch=plonk_gadgets#b72d5cf7)
error[E0277]: the trait bound E: pairing_ce::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:43:38
|
43 | pub trait PoseidonCsSBox<E: Engine>: SBox {
| ^^^^^^^ the trait pairing_ce::Engine is not implemented for E
|
help: consider further restricting this bound with + pairing_ce::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:43:29
|
43 | pub trait PoseidonCsSBox<E: Engine>: SBox {
| ^^^^^^
= note: required by poseidon_hash::SBox

error[E0277]: the trait bound E: pairing_ce::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:49:17
|
49 | impl<E: Engine> PoseidonCsSBox for QuinticSBox {
| ^^^^^^^^^^^^^^^^^ the trait pairing_ce::Engine is not implemented for E
|
help: consider further restricting this bound with + pairing_ce::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:49:9
|
49 | impl<E: Engine> PoseidonCsSBox for QuinticSBox {
| ^^^^^^
= note: required because of the requirements on the impl of poseidon_hash::SBox<E> for poseidon_hash::QuinticSBox<E>

error[E0277]: the trait bound E: bellman::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:95:26
|
95 | AccumulatingToAbsorb(Vec<Num>),
| ^^^^^^^^^^^ the trait bellman::Engine is not implemented for E
|
::: /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/allocated_num.rs:31:1
|
31 | pub enum Num<E: Engine> {
| ----------------------- required by plonk::circuit::allocated_num::Num
|
help: consider further restricting this bound with + bellman::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:94:16
|
94 | enum OpMode<E: PoseidonEngine> {
| ^^^^^^^^^^^^^^

error[E0277]: the trait bound E: bellman::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:100:5
|
100 | internal_state: Vec<LinearCombination>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait bellman::Engine is not implemented for E
|
::: /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/linear_combination.rs:39:1
|
39 | pub struct LinearCombination<E: Engine> {
| --------------------------------------- required by plonk::circuit::linear_combination::LinearCombination
|
help: consider further restricting this bound with + bellman::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:99:38
|
99 | pub struct StatefulPoseidonGadget<E: PoseidonEngine> {
| ^^^^^^^^^^^^^^

error[E0277]: the trait bound E: bellman::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:105:75
|
43 | pub trait PoseidonCsSBox<E: Engine>: SBox {
| -------------------------------------------- required by plonk::circuit::poseidon::PoseidonCsSBox
...
105 | where <::Params as PoseidonHashParams>::SBox: PoseidonCsSBox
| ^^^^^^^^^^^^^^^^^ the trait bellman::Engine is not implemented for E
|
help: consider restricting this type parameter with where E: bellman::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:104:6
|
104 | impl<E: PoseidonEngine> StatefulPoseidonGadget
| ^

error[E0277]: the trait bound E: pairing_ce::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:53:9
|
53 | &self,
| ^^^^^ the trait pairing_ce::Engine is not implemented for E
|
help: consider further restricting this bound with + pairing_ce::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:49:9
|
49 | impl<E: Engine> PoseidonCsSBox for QuinticSBox {
| ^^^^^^
= note: required by poseidon_hash::QuinticSBox

error[E0277]: the trait bound E: pairing_ce::Engine is not satisfied
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:85:9
|
85 | &self,
| ^^^^^ the trait pairing_ce::Engine is not implemented for E
|
help: consider further restricting this bound with + pairing_ce::Engine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:49:9
|
49 | impl<E: Engine> PoseidonCsSBox for QuinticSBox {
| ^^^^^^
= note: required by poseidon_hash::QuinticSBox

error[E0277]: the trait bound E: bellman::ScalarEngine is not satisfied in plonk::circuit::linear_combination::LinearCombination<E>
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:120:16
|
120 | state: &[LinearCombination],
| ^^^^^^^^^^^^^^^^^^^^^^^ within plonk::circuit::linear_combination::LinearCombination<E>, the trait bellman::ScalarEngine is not implemented for E
|
help: consider restricting this type parameter with where E: bellman::ScalarEngine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:104:6
|
104 | impl<E: PoseidonEngine> StatefulPoseidonGadget
| ^
= note: required because it appears within the type plonk::circuit::linear_combination::LinearCombination<E>
= note: slice and array elements must have Sized type

error[E0277]: the trait bound E: bellman::ScalarEngine is not satisfied in plonk::circuit::linear_combination::LinearCombination<E>
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:353:10
|
353 | ) -> Result<LinearCombination, SynthesisError> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within plonk::circuit::linear_combination::LinearCombination<E>, the trait bellman::ScalarEngine is not implemented for E
|
help: consider restricting this type parameter with where E: bellman::ScalarEngine
--> /Users/chenhuan/.cargo/git/checkouts/franklin-crypto-4c6ecf4148c62588/b72d5cf/src/plonk/circuit/poseidon.rs:104:6
|
104 | impl<E: PoseidonEngine> StatefulPoseidonGadget
| ^
= note: required because it appears within the type plonk::circuit::linear_combination::LinearCombination<E>
= note: required by std::result::Result

error: aborting due to 9 previous errors

For more information about this error, try rustc --explain E0277.
error: could not compile franklin-crypto.

To learn more, run the command again with --verbose.

This looks like a mismatch of the "pairing_ce" crate versions in franklin and in poseidon hash crate. Can you try "cargo update" and rebuild? Also you can use the "dev" branch for latest versions of bellman and gadgets

Thanks. Using the "dev" branch for latest versions of bellman and gadgets, it works.