mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 16:23:12 +00:00
Merge pull request #1201 from shuklaayush/fix/keccak-stark-reg-preimage
fix: constrain higher bits of reg_preimage
This commit is contained in:
commit
760f09a8aa
@ -266,9 +266,14 @@ impl<F: RichField + Extendable<D>, const D: usize> Stark<F, D> for KeccakStark<F
|
|||||||
// If this is not the final step, the local and next preimages must match.
|
// If this is not the final step, the local and next preimages must match.
|
||||||
for x in 0..5 {
|
for x in 0..5 {
|
||||||
for y in 0..5 {
|
for y in 0..5 {
|
||||||
let preimage = reg_preimage(x, y);
|
let reg_preimage_lo = reg_preimage(x, y);
|
||||||
let diff = vars.local_values[preimage] - vars.next_values[preimage];
|
let reg_preimage_hi = reg_preimage_lo + 1;
|
||||||
yield_constr.constraint_transition(not_final_step * diff);
|
let diff_lo =
|
||||||
|
vars.local_values[reg_preimage_lo] - vars.next_values[reg_preimage_lo];
|
||||||
|
let diff_hi =
|
||||||
|
vars.local_values[reg_preimage_hi] - vars.next_values[reg_preimage_hi];
|
||||||
|
yield_constr.constraint_transition(not_final_step * diff_lo);
|
||||||
|
yield_constr.constraint_transition(not_final_step * diff_hi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -436,9 +441,18 @@ impl<F: RichField + Extendable<D>, const D: usize> Stark<F, D> for KeccakStark<F
|
|||||||
// If this is not the final step, the local and next preimages must match.
|
// If this is not the final step, the local and next preimages must match.
|
||||||
for x in 0..5 {
|
for x in 0..5 {
|
||||||
for y in 0..5 {
|
for y in 0..5 {
|
||||||
let preimage = reg_preimage(x, y);
|
let reg_preimage_lo = reg_preimage(x, y);
|
||||||
let diff =
|
let reg_preimage_hi = reg_preimage_lo + 1;
|
||||||
builder.sub_extension(vars.local_values[preimage], vars.next_values[preimage]);
|
let diff = builder.sub_extension(
|
||||||
|
vars.local_values[reg_preimage_lo],
|
||||||
|
vars.next_values[reg_preimage_lo],
|
||||||
|
);
|
||||||
|
let constraint = builder.mul_extension(not_final_step, diff);
|
||||||
|
yield_constr.constraint_transition(builder, constraint);
|
||||||
|
let diff = builder.sub_extension(
|
||||||
|
vars.local_values[reg_preimage_hi],
|
||||||
|
vars.next_values[reg_preimage_hi],
|
||||||
|
);
|
||||||
let constraint = builder.mul_extension(not_final_step, diff);
|
let constraint = builder.mul_extension(not_final_step, diff);
|
||||||
yield_constr.constraint_transition(builder, constraint);
|
yield_constr.constraint_transition(builder, constraint);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user