mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-03 22:33:06 +00:00
Merge pull request #833 from mir-protocol/witness_gen_fixes
Fixes & re-enabling most constraints
This commit is contained in:
commit
4a0fbb289c
@ -105,8 +105,9 @@ pub(crate) fn eval_bootstrap_kernel<F: Field, P: PackedField<Scalar = F>>(
|
|||||||
.zip(local_values.general.keccak().output_limbs)
|
.zip(local_values.general.keccak().output_limbs)
|
||||||
{
|
{
|
||||||
let expected = P::from(F::from_canonical_u32(expected));
|
let expected = P::from(F::from_canonical_u32(expected));
|
||||||
let diff = expected - actual;
|
let _diff = expected - actual;
|
||||||
yield_constr.constraint_transition(delta_is_bootstrap * diff);
|
// TODO: Not working yet.
|
||||||
|
// yield_constr.constraint_transition(delta_is_bootstrap * diff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +147,8 @@ pub(crate) fn eval_bootstrap_kernel_circuit<F: RichField + Extendable<D>, const
|
|||||||
{
|
{
|
||||||
let expected = builder.constant_extension(F::Extension::from_canonical_u32(expected));
|
let expected = builder.constant_extension(F::Extension::from_canonical_u32(expected));
|
||||||
let diff = builder.sub_extension(expected, actual);
|
let diff = builder.sub_extension(expected, actual);
|
||||||
let constraint = builder.mul_extension(delta_is_bootstrap, diff);
|
let _constraint = builder.mul_extension(delta_is_bootstrap, diff);
|
||||||
yield_constr.constraint_transition(builder, constraint);
|
// TODO: Not working yet.
|
||||||
|
// yield_constr.constraint_transition(builder, constraint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -136,7 +136,7 @@ impl<F: RichField + Extendable<D>, const D: usize> Stark<F, D> for CpuStark<F, D
|
|||||||
fn eval_packed_generic<FE, P, const D2: usize>(
|
fn eval_packed_generic<FE, P, const D2: usize>(
|
||||||
&self,
|
&self,
|
||||||
vars: StarkEvaluationVars<FE, P, { Self::COLUMNS }>,
|
vars: StarkEvaluationVars<FE, P, { Self::COLUMNS }>,
|
||||||
_yield_constr: &mut ConstraintConsumer<P>,
|
yield_constr: &mut ConstraintConsumer<P>,
|
||||||
) where
|
) where
|
||||||
FE: FieldExtension<D2, BaseField = F>,
|
FE: FieldExtension<D2, BaseField = F>,
|
||||||
P: PackedField<Scalar = FE>,
|
P: PackedField<Scalar = FE>,
|
||||||
@ -145,25 +145,25 @@ impl<F: RichField + Extendable<D>, const D: usize> Stark<F, D> for CpuStark<F, D
|
|||||||
let next_values = vars.next_values.borrow();
|
let next_values = vars.next_values.borrow();
|
||||||
// TODO: Some failing constraints temporarily disabled by using this dummy consumer.
|
// TODO: Some failing constraints temporarily disabled by using this dummy consumer.
|
||||||
let mut dummy_yield_constr = ConstraintConsumer::new(vec![], P::ZEROS, P::ZEROS, P::ZEROS);
|
let mut dummy_yield_constr = ConstraintConsumer::new(vec![], P::ZEROS, P::ZEROS, P::ZEROS);
|
||||||
bootstrap_kernel::eval_bootstrap_kernel(vars, &mut dummy_yield_constr);
|
bootstrap_kernel::eval_bootstrap_kernel(vars, yield_constr);
|
||||||
control_flow::eval_packed_generic(local_values, next_values, &mut dummy_yield_constr);
|
control_flow::eval_packed_generic(local_values, next_values, yield_constr);
|
||||||
decode::eval_packed_generic(local_values, &mut dummy_yield_constr);
|
decode::eval_packed_generic(local_values, yield_constr);
|
||||||
dup_swap::eval_packed(local_values, &mut dummy_yield_constr);
|
dup_swap::eval_packed(local_values, yield_constr);
|
||||||
jumps::eval_packed(local_values, next_values, &mut dummy_yield_constr);
|
jumps::eval_packed(local_values, next_values, &mut dummy_yield_constr);
|
||||||
membus::eval_packed(local_values, &mut dummy_yield_constr);
|
membus::eval_packed(local_values, yield_constr);
|
||||||
modfp254::eval_packed(local_values, &mut dummy_yield_constr);
|
modfp254::eval_packed(local_values, yield_constr);
|
||||||
shift::eval_packed(local_values, &mut dummy_yield_constr);
|
shift::eval_packed(local_values, yield_constr);
|
||||||
simple_logic::eval_packed(local_values, &mut dummy_yield_constr);
|
simple_logic::eval_packed(local_values, yield_constr);
|
||||||
stack::eval_packed(local_values, &mut dummy_yield_constr);
|
stack::eval_packed(local_values, yield_constr);
|
||||||
stack_bounds::eval_packed(local_values, &mut dummy_yield_constr);
|
stack_bounds::eval_packed(local_values, &mut dummy_yield_constr);
|
||||||
syscalls::eval_packed(local_values, next_values, &mut dummy_yield_constr);
|
syscalls::eval_packed(local_values, next_values, yield_constr);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn eval_ext_circuit(
|
fn eval_ext_circuit(
|
||||||
&self,
|
&self,
|
||||||
builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder<F, D>,
|
builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder<F, D>,
|
||||||
vars: StarkEvaluationTargets<D, { Self::COLUMNS }>,
|
vars: StarkEvaluationTargets<D, { Self::COLUMNS }>,
|
||||||
_yield_constr: &mut RecursiveConstraintConsumer<F, D>,
|
yield_constr: &mut RecursiveConstraintConsumer<F, D>,
|
||||||
) {
|
) {
|
||||||
let local_values = vars.local_values.borrow();
|
let local_values = vars.local_values.borrow();
|
||||||
let next_values = vars.next_values.borrow();
|
let next_values = vars.next_values.borrow();
|
||||||
@ -171,18 +171,18 @@ impl<F: RichField + Extendable<D>, const D: usize> Stark<F, D> for CpuStark<F, D
|
|||||||
let zero = builder.zero_extension();
|
let zero = builder.zero_extension();
|
||||||
let mut dummy_yield_constr =
|
let mut dummy_yield_constr =
|
||||||
RecursiveConstraintConsumer::new(zero, vec![], zero, zero, zero);
|
RecursiveConstraintConsumer::new(zero, vec![], zero, zero, zero);
|
||||||
bootstrap_kernel::eval_bootstrap_kernel_circuit(builder, vars, &mut dummy_yield_constr);
|
bootstrap_kernel::eval_bootstrap_kernel_circuit(builder, vars, yield_constr);
|
||||||
control_flow::eval_ext_circuit(builder, local_values, next_values, &mut dummy_yield_constr);
|
control_flow::eval_ext_circuit(builder, local_values, next_values, yield_constr);
|
||||||
decode::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
decode::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
dup_swap::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
dup_swap::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
jumps::eval_ext_circuit(builder, local_values, next_values, &mut dummy_yield_constr);
|
jumps::eval_ext_circuit(builder, local_values, next_values, &mut dummy_yield_constr);
|
||||||
membus::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
membus::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
modfp254::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
modfp254::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
shift::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
shift::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
simple_logic::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
simple_logic::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
stack::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
stack::eval_ext_circuit(builder, local_values, yield_constr);
|
||||||
stack_bounds::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
stack_bounds::eval_ext_circuit(builder, local_values, &mut dummy_yield_constr);
|
||||||
syscalls::eval_ext_circuit(builder, local_values, next_values, &mut dummy_yield_constr);
|
syscalls::eval_ext_circuit(builder, local_values, next_values, yield_constr);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn constraint_degree(&self) -> usize {
|
fn constraint_degree(&self) -> usize {
|
||||||
|
|||||||
@ -225,6 +225,10 @@ fn perform_op<F: Field>(
|
|||||||
fn try_perform_instruction<F: Field>(state: &mut GenerationState<F>) -> Result<(), ProgramError> {
|
fn try_perform_instruction<F: Field>(state: &mut GenerationState<F>) -> Result<(), ProgramError> {
|
||||||
let mut row: CpuColumnsView<F> = CpuColumnsView::default();
|
let mut row: CpuColumnsView<F> = CpuColumnsView::default();
|
||||||
row.is_cpu_cycle = F::ONE;
|
row.is_cpu_cycle = F::ONE;
|
||||||
|
row.context = F::from_canonical_usize(state.registers.context);
|
||||||
|
row.program_counter = F::from_canonical_usize(state.registers.program_counter);
|
||||||
|
row.is_kernel_mode = F::from_bool(state.registers.is_kernel);
|
||||||
|
row.stack_len = F::from_canonical_usize(state.registers.stack_len);
|
||||||
|
|
||||||
let opcode = read_code_memory(state, &mut row);
|
let opcode = read_code_memory(state, &mut row);
|
||||||
let op = decode(state.registers, opcode)?;
|
let op = decode(state.registers, opcode)?;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user