Skip to content

Conversation

@DoHoonKim8
Copy link
Contributor

@DoHoonKim8 DoHoonKim8 commented Nov 27, 2025

Currently plonkish supports proving the halo2 circuit with multiple user phases partially. In this PR, I am trying to fix some subtle mistake & add support for multi-phase witness assignment.

  • During circuit preprocessing, the initialization of PlonkishCircuitInfo struct's num_challenges field has subtle mistake, if the last phase does not squeeze out challenges, then the length of num_challenges and num_witness_polys will mismatch, leading to the failure in line. It can be worked around by simply adding 0 if there is no challenge in the last phase.
  • Also during preprocessing, if the column in next phase is included in permutation argument, the key not found error occurs in the line, since column_idx hash map key does not contain the column phase information.
  • In circuit synthesis step during proving, the synthesizer only carries num_witness_polys[phase] amount of advice columns around, so the cell in the previous phase column cannot be assigned to the next phase column. It's quite trivial to allow cell copy from the previous phase to the next phase column, but the other way should be prohibited.

Copy link
Owner

@han0110 han0110 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the fix!

@han0110 han0110 merged commit 8d5adce into han0110:main Nov 27, 2025
1 of 2 checks passed
@DoHoonKim8 DoHoonKim8 deleted the multi-phase-assignment branch November 28, 2025 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants