pub trait MultiScalarMultiplicationCircuit<F, P>where
F: PrimeField,
P: Config<BaseField = F>,{
// Required methods
fn msm(
&mut self,
bases: &[PointVariable],
scalars: &[Variable],
) -> Result<PointVariable, CircuitError>;
fn msm_with_var_scalar_length(
&mut self,
bases: &[PointVariable],
scalars: &[Variable],
scalar_bit_length: usize,
) -> Result<PointVariable, CircuitError>;
}
Expand description
Compute the multi-scalar-multiplications in circuit.
Required Methods§
Sourcefn msm(
&mut self,
bases: &[PointVariable],
scalars: &[Variable],
) -> Result<PointVariable, CircuitError>
fn msm( &mut self, bases: &[PointVariable], scalars: &[Variable], ) -> Result<PointVariable, CircuitError>
Compute the multi-scalar-multiplications. Use pippenger when the circuit supports lookup; Use naive method otherwise. Return error if the number bases does not match the number of scalars.
Sourcefn msm_with_var_scalar_length(
&mut self,
bases: &[PointVariable],
scalars: &[Variable],
scalar_bit_length: usize,
) -> Result<PointVariable, CircuitError>
fn msm_with_var_scalar_length( &mut self, bases: &[PointVariable], scalars: &[Variable], scalar_bit_length: usize, ) -> Result<PointVariable, CircuitError>
Compute the multi-scalar-multiplications where each scalar has at most
scalar_bit_length
bits.