Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
libsnark::mp_compliance_step_pcd_circuit_maker< ppT > Class Template Reference

#include <mp_pcd_circuits.hpp>

Public Types

typedef libff::Fr< ppT > FieldT
 

Public Member Functions

 mp_compliance_step_pcd_circuit_maker (const r1cs_pcd_compliance_predicate< FieldT > &compliance_predicate, const size_t max_number_of_predicates)
 
void generate_r1cs_constraints ()
 
r1cs_constraint_system< FieldTget_circuit () const
 
void generate_r1cs_witness (const set_commitment &commitment_to_translation_step_r1cs_vks, const std::vector< r1cs_ppzksnark_verification_key< other_curve< ppT >>> &mp_translation_step_pcd_circuit_vks, const std::vector< set_membership_proof > &vk_membership_proofs, const r1cs_pcd_compliance_predicate_primary_input< FieldT > &compliance_predicate_primary_input, const r1cs_pcd_compliance_predicate_auxiliary_input< FieldT > &compliance_predicate_auxiliary_input, const std::vector< r1cs_ppzksnark_proof< other_curve< ppT >>> &translation_step_proofs)
 
r1cs_primary_input< FieldTget_primary_input () const
 
r1cs_auxiliary_input< FieldTget_auxiliary_input () const
 

Static Public Member Functions

static size_t field_logsize ()
 
static size_t field_capacity ()
 
static size_t input_size_in_elts ()
 
static size_t input_capacity_in_bits ()
 
static size_t input_size_in_bits ()
 

Public Attributes

r1cs_pcd_compliance_predicate< FieldTcompliance_predicate
 
protoboard< FieldTpb
 
pb_variable< FieldTzero
 
std::shared_ptr< block_variable< FieldT > > block_for_outgoing_message
 
std::shared_ptr< CRH_with_field_out_gadget< FieldT > > hash_outgoing_message
 
std::vector< block_variable< FieldT > > block_for_incoming_messages
 
std::vector< pb_variable_array< FieldT > > commitment_and_incoming_message_digests
 
std::vector< multipacking_gadget< FieldT > > unpack_commitment_and_incoming_message_digests
 
std::vector< pb_variable_array< FieldT > > commitment_and_incoming_messages_digest_bits
 
std::vector< CRH_with_field_out_gadget< FieldT > > hash_incoming_messages
 
std::vector< r1cs_ppzksnark_verification_key_variable< ppT > > translation_step_vks
 
std::vector< pb_variable_array< FieldT > > translation_step_vks_bits
 
pb_variable< FieldToutgoing_message_type
 
pb_variable_array< FieldToutgoing_message_payload
 
pb_variable_array< FieldToutgoing_message_vars
 
pb_variable< FieldTarity
 
std::vector< pb_variable< FieldT > > incoming_message_types
 
std::vector< pb_variable_array< FieldT > > incoming_message_payloads
 
std::vector< pb_variable_array< FieldT > > incoming_message_vars
 
pb_variable_array< FieldTlocal_data
 
pb_variable_array< FieldTcp_witness
 
std::shared_ptr< gadget_from_r1cs< FieldT > > compliance_predicate_as_gadget
 
pb_variable_array< FieldToutgoing_message_bits
 
std::shared_ptr< multipacking_gadget< FieldT > > unpack_outgoing_message
 
std::vector< pb_variable_array< FieldT > > incoming_messages_bits
 
std::vector< multipacking_gadget< FieldT > > unpack_incoming_messages
 
pb_variable_array< FieldTmp_compliance_step_pcd_circuit_input
 
pb_variable_array< FieldTpadded_translation_step_vk_and_outgoing_message_digest
 
std::vector< pb_variable_array< FieldT > > padded_commitment_and_incoming_messages_digest
 
std::shared_ptr< set_commitment_variable< FieldT, CRH_with_bit_out_gadget< FieldT > > > commitment
 
std::vector< set_membership_proof_variable< FieldT, CRH_with_bit_out_gadget< FieldT > > > membership_proofs
 
std::vector< set_commitment_gadget< FieldT, CRH_with_bit_out_gadget< FieldT > > > membership_checkers
 
pb_variable_array< FieldTmembership_check_results
 
pb_variable< FieldTcommon_type
 
pb_variable_array< FieldTcommon_type_check_aux
 
std::vector< pb_variable_array< FieldT > > verifier_input
 
std::vector< r1cs_ppzksnark_proof_variable< ppT > > proof
 
pb_variable_array< FieldTverification_results
 
std::vector< r1cs_ppzksnark_verifier_gadget< ppT > > verifier
 

Detailed Description

template<typename ppT>
class libsnark::mp_compliance_step_pcd_circuit_maker< ppT >

A compliance-step PCD circuit.

The circuit is an R1CS that checks compliance (for the given compliance predicate) and validity of previous proofs.

Definition at line 46 of file mp_pcd_circuits.hpp.

Member Typedef Documentation

◆ FieldT

template<typename ppT >
typedef libff::Fr<ppT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::FieldT

Definition at line 49 of file mp_pcd_circuits.hpp.

Constructor & Destructor Documentation

◆ mp_compliance_step_pcd_circuit_maker()

template<typename ppT >
libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::mp_compliance_step_pcd_circuit_maker ( const r1cs_pcd_compliance_predicate< FieldT > &  compliance_predicate,
const size_t  max_number_of_predicates 
)

Member Function Documentation

◆ field_capacity()

template<typename ppT >
static size_t libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::field_capacity ( )
static

◆ field_logsize()

template<typename ppT >
static size_t libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::field_logsize ( )
static

◆ generate_r1cs_constraints()

template<typename ppT >
void libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::generate_r1cs_constraints ( )

◆ generate_r1cs_witness()

template<typename ppT >
void libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::generate_r1cs_witness ( const set_commitment commitment_to_translation_step_r1cs_vks,
const std::vector< r1cs_ppzksnark_verification_key< other_curve< ppT >>> &  mp_translation_step_pcd_circuit_vks,
const std::vector< set_membership_proof > &  vk_membership_proofs,
const r1cs_pcd_compliance_predicate_primary_input< FieldT > &  compliance_predicate_primary_input,
const r1cs_pcd_compliance_predicate_auxiliary_input< FieldT > &  compliance_predicate_auxiliary_input,
const std::vector< r1cs_ppzksnark_proof< other_curve< ppT >>> &  translation_step_proofs 
)

◆ get_auxiliary_input()

template<typename ppT >
r1cs_auxiliary_input<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::get_auxiliary_input ( ) const

◆ get_circuit()

template<typename ppT >
r1cs_constraint_system<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::get_circuit ( ) const

◆ get_primary_input()

template<typename ppT >
r1cs_primary_input<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::get_primary_input ( ) const

◆ input_capacity_in_bits()

template<typename ppT >
static size_t libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::input_capacity_in_bits ( )
static

◆ input_size_in_bits()

template<typename ppT >
static size_t libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::input_size_in_bits ( )
static

◆ input_size_in_elts()

template<typename ppT >
static size_t libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::input_size_in_elts ( )
static

Member Data Documentation

◆ arity

template<typename ppT >
pb_variable<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::arity

Definition at line 77 of file mp_pcd_circuits.hpp.

◆ block_for_incoming_messages

template<typename ppT >
std::vector<block_variable<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::block_for_incoming_messages

Definition at line 60 of file mp_pcd_circuits.hpp.

◆ block_for_outgoing_message

template<typename ppT >
std::shared_ptr<block_variable<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::block_for_outgoing_message

Definition at line 57 of file mp_pcd_circuits.hpp.

◆ commitment

template<typename ppT >
std::shared_ptr< set_commitment_variable<FieldT, CRH_with_bit_out_gadget<FieldT> > > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::commitment

Definition at line 100 of file mp_pcd_circuits.hpp.

◆ commitment_and_incoming_message_digests

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::commitment_and_incoming_message_digests

Definition at line 62 of file mp_pcd_circuits.hpp.

◆ commitment_and_incoming_messages_digest_bits

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::commitment_and_incoming_messages_digest_bits

Definition at line 66 of file mp_pcd_circuits.hpp.

◆ common_type

template<typename ppT >
pb_variable<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::common_type

Definition at line 107 of file mp_pcd_circuits.hpp.

◆ common_type_check_aux

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::common_type_check_aux

Definition at line 108 of file mp_pcd_circuits.hpp.

◆ compliance_predicate

template<typename ppT >
r1cs_pcd_compliance_predicate<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::compliance_predicate

Definition at line 51 of file mp_pcd_circuits.hpp.

◆ compliance_predicate_as_gadget

template<typename ppT >
std::shared_ptr<gadget_from_r1cs<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::compliance_predicate_as_gadget

Definition at line 84 of file mp_pcd_circuits.hpp.

◆ cp_witness

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::cp_witness

Definition at line 83 of file mp_pcd_circuits.hpp.

◆ hash_incoming_messages

template<typename ppT >
std::vector<CRH_with_field_out_gadget<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::hash_incoming_messages

Definition at line 67 of file mp_pcd_circuits.hpp.

◆ hash_outgoing_message

template<typename ppT >
std::shared_ptr<CRH_with_field_out_gadget<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::hash_outgoing_message

Definition at line 58 of file mp_pcd_circuits.hpp.

◆ incoming_message_payloads

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::incoming_message_payloads

Definition at line 79 of file mp_pcd_circuits.hpp.

◆ incoming_message_types

template<typename ppT >
std::vector<pb_variable<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::incoming_message_types

Definition at line 78 of file mp_pcd_circuits.hpp.

◆ incoming_message_vars

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::incoming_message_vars

Definition at line 80 of file mp_pcd_circuits.hpp.

◆ incoming_messages_bits

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::incoming_messages_bits

Definition at line 89 of file mp_pcd_circuits.hpp.

◆ local_data

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::local_data

Definition at line 82 of file mp_pcd_circuits.hpp.

◆ membership_check_results

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::membership_check_results

Definition at line 106 of file mp_pcd_circuits.hpp.

◆ membership_checkers

template<typename ppT >
std::vector<set_commitment_gadget<FieldT, CRH_with_bit_out_gadget<FieldT> > > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::membership_checkers

Definition at line 105 of file mp_pcd_circuits.hpp.

◆ membership_proofs

template<typename ppT >
std::vector< set_membership_proof_variable<FieldT, CRH_with_bit_out_gadget<FieldT> > > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::membership_proofs

Definition at line 103 of file mp_pcd_circuits.hpp.

◆ mp_compliance_step_pcd_circuit_input

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::mp_compliance_step_pcd_circuit_input

Definition at line 92 of file mp_pcd_circuits.hpp.

◆ outgoing_message_bits

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::outgoing_message_bits

Definition at line 86 of file mp_pcd_circuits.hpp.

◆ outgoing_message_payload

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::outgoing_message_payload

Definition at line 74 of file mp_pcd_circuits.hpp.

◆ outgoing_message_type

template<typename ppT >
pb_variable<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::outgoing_message_type

Definition at line 73 of file mp_pcd_circuits.hpp.

◆ outgoing_message_vars

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::outgoing_message_vars

Definition at line 75 of file mp_pcd_circuits.hpp.

◆ padded_commitment_and_incoming_messages_digest

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::padded_commitment_and_incoming_messages_digest

Definition at line 96 of file mp_pcd_circuits.hpp.

◆ padded_translation_step_vk_and_outgoing_message_digest

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::padded_translation_step_vk_and_outgoing_message_digest

Definition at line 94 of file mp_pcd_circuits.hpp.

◆ pb

Definition at line 53 of file mp_pcd_circuits.hpp.

◆ proof

template<typename ppT >
std::vector<r1cs_ppzksnark_proof_variable<ppT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::proof

Definition at line 111 of file mp_pcd_circuits.hpp.

◆ translation_step_vks

template<typename ppT >
std::vector<r1cs_ppzksnark_verification_key_variable<ppT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::translation_step_vks

Definition at line 70 of file mp_pcd_circuits.hpp.

◆ translation_step_vks_bits

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::translation_step_vks_bits

Definition at line 71 of file mp_pcd_circuits.hpp.

◆ unpack_commitment_and_incoming_message_digests

template<typename ppT >
std::vector<multipacking_gadget<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::unpack_commitment_and_incoming_message_digests

Definition at line 64 of file mp_pcd_circuits.hpp.

◆ unpack_incoming_messages

template<typename ppT >
std::vector<multipacking_gadget<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::unpack_incoming_messages

Definition at line 90 of file mp_pcd_circuits.hpp.

◆ unpack_outgoing_message

template<typename ppT >
std::shared_ptr<multipacking_gadget<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::unpack_outgoing_message

Definition at line 87 of file mp_pcd_circuits.hpp.

◆ verification_results

template<typename ppT >
pb_variable_array<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::verification_results

Definition at line 112 of file mp_pcd_circuits.hpp.

◆ verifier

template<typename ppT >
std::vector<r1cs_ppzksnark_verifier_gadget<ppT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::verifier

Definition at line 113 of file mp_pcd_circuits.hpp.

◆ verifier_input

template<typename ppT >
std::vector<pb_variable_array<FieldT> > libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::verifier_input

Definition at line 110 of file mp_pcd_circuits.hpp.

◆ zero

template<typename ppT >
pb_variable<FieldT> libsnark::mp_compliance_step_pcd_circuit_maker< ppT >::zero

Definition at line 55 of file mp_pcd_circuits.hpp.


The documentation for this class was generated from the following file: