This is an initial refactor performed during Halo 2 Office Hours, to explore the effects of this split on the wider codebase.
At the end, we discussed the result, and noted that the verifying key type still contains data in sub-types that is irrelevant to the actual verifying key. The verifying key type is also never exposed in the public API of the verifying key; ConstraintSystem was only public for its use in Circuit::configure.
The likely next steps are:
Rework PinnedConstraintSystem to be the verifying key type, only storing the data needed for the transcript, but being an owned type that exposes immutable references via methods instead of its fields being pub(crate).
Undo the ConstraintSystemBuilder rename, so we are just removing parts of the ConstraintSystem API.
Rework ConstraintSystem::pinned and VerifyingKey::from_parts to instead become the builder method for the verifying key type along with the data that is cached alongside it inside VerifyingKey.
Refactor the very few methods that we identified as only relevant to the verifying key type, as they are only used redundantly.
This is an initial refactor performed during Halo 2 Office Hours, to explore the effects of this split on the wider codebase.
At the end, we discussed the result, and noted that the verifying key type still contains data in sub-types that is irrelevant to the actual verifying key. The verifying key type is also never exposed in the public API of the verifying key;
ConstraintSystem
was only public for its use inCircuit::configure
.The likely next steps are:
PinnedConstraintSystem
to be the verifying key type, only storing the data needed for the transcript, but being an owned type that exposes immutable references via methods instead of its fields beingpub(crate)
.ConstraintSystemBuilder
rename, so we are just removing parts of theConstraintSystem
API.ConstraintSystem::pinned
andVerifyingKey::from_parts
to instead become the builder method for the verifying key type along with the data that is cached alongside it insideVerifyingKey
.