I noticed that it seems the original Plonk paper introduced that there were two extensions with state width = 3 or 4 (as described in proof_system_info_v1.0/README.md at master · matter-labs/proof_system_info_v1.0 · GitHub). I recently reviewed some code and they set the state width = 5 and set the verification key as follows.
uint256 constant STATE_WIDTH = 5;
struct VerificationKey {
uint128 domain_size;
uint128 num_inputs;
PairingsBn254.Fr omega;
PairingsBn254.G1Point[STATE_WIDTH + 2 + 2 + 2] selector_commitments;
PairingsBn254.G1Point[STATE_WIDTH] permutation_commitments;
PairingsBn254.G1Point[STATE_WIDTH + 1] tables_commitments;
PairingsBn254.G2Point g2_x;
}
I’m thinking whether setting those parameters are legit or not? Is the state width must be fixed to 3 or 4?