privacy-scaling-explorations / zkevm-circuits

https://privacy-scaling-explorations.github.io/zkevm-circuits/
Other
818 stars 854 forks source link

nondeterministic circuit generation in integration test #1783

Closed hero78119 closed 7 months ago

hero78119 commented 7 months ago

What command(s) is the bug in?

Remote CI integration test

Describe the bug

Circuit are nondeterministic generated, which lead to variadic constraint system

Reproduced on latest main branch

PR and correspondent CI error

Preliminary investigated result

Mismatched are fixed column index 1 after insert more debug log. Also reported the stack trace where index_1 fixed column are inserted in ConstrainSystem, which came from block_table It might came from block_table refactor long time ago.

stack backtrace:
   ...
   3: zkevm_circuits::table::block_table::BlockTable::construct
             at ./src/table/block_table.rs:46:18
   4: <zkevm_circuits::evm_circuit::EvmCircuit<F> as halo2_proofs::plonk::circuit::Circuit<F>>::configure_with_params
             at ./src/evm_circuit.rs:506:27
   5: zkevm_circuits::evm_circuit::param::get_step_height_map
             at ./src/evm_circuit/param.rs:188:19
   6: <zkevm_circuits::evm_circuit::param::EXECUTION_STATE_HEIGHT_MAP as core::ops::deref::Deref>::deref::__static_ref_initialize
             at ./src/evm_circuit/param.rs:184:89
   7: core::ops::function::FnOnce::call_once
             at /rustc/7f94b314cead7059a71a265a8b64905ef2511796/library/core/src/ops/function.rs:250:5
   8: spin::once::Once<T>::call_once
             at /home/wusm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/spin-0.5.2/src/once.rs:110:50
   9: lazy_static::lazy::Lazy<T>::get
             at /home/wusm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/core_lazy.rs:21:9
  10: <zkevm_circuits::evm_circuit::param::EXECUTION_STATE_HEIGHT_MAP as core::ops::deref::Deref>::deref::__stability
             at /home/wusm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/lib.rs:142:21
  11: <zkevm_circuits::evm_circuit::param::EXECUTION_STATE_HEIGHT_MAP as core::ops::deref::Deref>::deref
             at /home/wusm/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lazy_static-1.4.0/src/lib.rs:144:17
  12: zkevm_circuits::evm_circuit::step::ExecutionState::get_step_height_option
             at ./src/evm_circuit/step.rs:607:9
  13: zkevm_circuits::evm_circuit::step::ExecutionState::get_step_height
             at ./src/evm_circuit/step.rs:611:9
  14: zkevm_circuits::evm_circuit::EvmCircuit<F>::get_min_num_rows_required
             at ./src/evm_circuit.rs:260:33
  15: zkevm_circuits::evm_circuit::EvmCircuit<F>::get_num_rows_required
             at ./src/evm_circuit.rs:246:13
  ...

Other related issue for reference

hero78119 commented 7 months ago

It's related to this commit https://github.com/privacy-scaling-explorations/zkevm-circuits/commit/3a46772e381a289e0792db5e242c9e3119337eb9 where previously it's under advice_column. Upon change to fixed_column once history_hash vector are not getting in same size then lead to variadic bug.

hero78119 commented 7 months ago

Duplicated with https://github.com/privacy-scaling-explorations/zkevm-circuits/issues/1703