matter-labs / franklin-crypto

Other
115 stars 66 forks source link

build error #23

Open chenhuan14 opened 4 years ago

chenhuan14 commented 4 years ago

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: 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: 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 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 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 { ----------------------- 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 { | ^^^^^^^^^^^^^^

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 { --------------------------------------- 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 { | ^^^^^^^^^^^^^^

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: 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 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 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 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 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 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.

shamatar commented 4 years ago

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

chenhuan14 commented 4 years ago

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