In my studies, I have seen two common ways that an Honest Verifier Zero Knowledge Proof can be converted to a Zero Knowledge Proof. Either make the proof non-interactive with Fiat-Shamir's Heuristic (thus removing the Verifier) or make the Verifier commit the challenge beforehand.
Wouldn't it also be secure for the Prover to commit his initial communications in a Pedersen Commitment? The protocol would look like this:
- The Prover calculates the initial communications
- The Prover commits the initial communications and sends the commitment(s) to the Verifier.
- The Verifier sends a challenge.
- The Prover calculates the response.
- The Prover sends the response and the information to open the commitment(s) to the Verifier.
- If the transcript is valid and the initial communication matches the commitment(s), the Verifier accepts.
If my reasoning is valid, this would make the Zero Knowledge Proofs parallelizable without worrying about any meaningful interdependencies. The commitments that would be used are perfectly hiding, and thus reveal nothing about the contents, meaning the Verifier has no real information about this proof until his inputs are completed. This means the Verifier can't use information from ZKP 1 on ZKP 2's challenge and use that response for part of ZKP 1's challenge, which, as far as I understand, is a problem in parallel composition of Zero Knowledge Proofs.
The downside is the initial communications can be large and it could cost a lot of exponentiations and communications to commit them all in Pedersen Commitment and send them, but you may be able to commit using a hashing function instead, but these aren't perfectly hiding.