Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
9 #ifndef LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_
10 #define LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_
16 #include <libff/algebra/curves/public_params.hpp>
34 template<
typename ppT,
typename groupT,
typename groupVariableT>
80 typename variableSelectorT>
115 typename variableSelectorT>
134 const variableT &one_case,
149 typename variableSelectorT,
222 typename variableSelectorT,
267 typename groupVariableT,
306 typename groupVariableT,
311 :
public gadget<typename groupT::base_field>
314 using FieldT =
typename groupT::base_field;
323 const scalarT &scalar,
324 const groupVariableT &P,
325 const groupVariableT &
result,
330 const groupVariableT &
result()
const;
339 typename selectorGadgetT,
346 using nFr = libff::Fr<other_curve<ppT>>;
408 #endif // LIBSNARK_GADGETLIB1_GADGETS_CURVE_SCALAR_MULTIPLICATION_HPP_
void generate_r1cs_witness()
void generate_r1cs_constraints()
variableSelectorT selector_A_not_identity
void generate_r1cs_constraints()
const groupVariableT _result
const std::string annotation_prefix
std::vector< std::shared_ptr< add_gadget > > _add_gadgets
void generate_r1cs_constraints()
void generate_r1cs_witness()
add_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableOrIdentity &B, const variableOrIdentity &result, const std::string &annotation_prefix)
pb_linear_combination< FieldT > result_is_identity
pb_linear_combination< FieldT > one_case_is_identity
void generate_r1cs_witness()
variableSelectorT selector_A
pb_linear_combination< FieldT > is_identity
protoboard< libff::Fr< ppT > > & pb
variableSelectorT value_selector
pb_linear_combination< FieldT > one_case_is_identity
groupT get_element() const
variableT A_not_identity_result
variable_or_identity(protoboard< FieldT > &pb, const std::string &annotation_prefix)
variableSelectorT value_selector
void generate_r1cs_constraints()
const groupVariableT & result() const
typename wppT ::base_field FieldT
void generate_r1cs_witness(const groupT &elt)
variable_and_variable_or_identity_selector(protoboard< FieldT > &pb, const pb_linear_combination< FieldT > &selector, const variableOrIdentity &zero_case, const variableT &one_case, const variableOrIdentity &result, const std::string &annotation_prefix)
std::shared_ptr< selectVarOrVarIdentityGadget > final_add_input_left
dbl_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableOrIdentity &result, const std::string &annotation_prefix)
std::vector< selectVarOrVarIdentityGadget > selector_gadgets
point_mul_by_const_scalar_gadget(protoboard< FieldT > &pb, const scalarT &scalar, const groupVariableT &P, const groupVariableT &result, const std::string &annotation_prefix)
libff::Fr< other_curve< ppT > > nFr
void generate_r1cs_witness()
pb_linear_combination< FieldT > zero_case_is_identity
void generate_r1cs_constraints()
void generate_r1cs_constraints()
const groupVarOrIdentity & result() const
void generate_r1cs_witness()
pb_variable< FieldT > is_identity_var
Selector gadget for variable_or_identity.
variableOrIdentity result
variableOrIdentity result
variable_or_identity_selector(protoboard< FieldT > &pb, const pb_linear_combination< FieldT > &selector, const variableOrIdentity &zero_case, const variableOrIdentity &one_case, const variableOrIdentity &result, const std::string &annotation_prefix)
point_mul_by_scalar_gadget(protoboard< Field > &pb, const pb_linear_combination< Field > &scalar, const groupVarT &P, const groupVarOrIdentity &result, const std::string &annotation_prefix)
void generate_r1cs_constraints()
void generate_r1cs_constraints()
void generate_r1cs_witness()
add_variable_and_variable_or_identity(protoboard< FieldT > &pb, const variableOrIdentity &A, const variableT &B, const variableT &result, const std::string &annotation_prefix)
std::vector< dblVarOrIdentityGadget > dbl_gadgets
variableOrIdentity result
std::vector< addVarAndVarOrIdentityGadget > add_gadgets
packing_gadget< Field > scalar_unpacked
void generate_r1cs_witness()
std::vector< std::shared_ptr< dbl_gadget > > _dbl_gadgets
std::shared_ptr< selectorGadgetT > final_add_input_right
pb_linear_combination< FieldT > A_is_identity
pb_linear_combination< FieldT > zero_case_is_identity
static pb_variable_array< Field > create_variable_array_for_bits(protoboard< Field > &pb, const std::string &annotation_prefix)
variableSelectorT selector_A
Selector gadget for a variable_or_identity, and a variable.