bellpepper-emulated: Avoid AssignmentMissing error when using MetricCS #51
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The changes in this PR are the following:
ed25519
that usesMetricCS
SynthesisError::AssignmentMissing
inalloc_num_equals_constant
SynthesisError::AssignmentMissing
inconditionally_select
ed25519
scalar multiplication usingMetricCS
fails with anAssignmentMissing
error.In
emulated/src/util.rs:alloc_num_equals_constant
, the function was returningSynthesisError::AssignmentMissing
when used withMetricCS
. The inputa
returnedNone
fora.get_value()
. Anemulated
library user also reported synthesis errors at this juncture.After fixing the above, the
AssignmentMissing
error occurred inemulated/src/field_element.rs:conditionally_select
. The below comment does not hold ifcondition
is set to aBoolean::Constant
. Socondition
could have a value when used withMetricCS
but the limbs may not have values.For example, in
ed25519
scalar multiplication, the bits corresponding to the scalar can be constantBoolean
s. It is possible a fixed group element is being calculated in the circuit.