Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Member Functions | Public Attributes | Friends | List of all members
libsnark::r1cs_pcd_compliance_predicate< FieldT > Class Template Reference

#include <compliance_predicate.hpp>

Public Member Functions

 r1cs_pcd_compliance_predicate ()=default
 
 r1cs_pcd_compliance_predicate (r1cs_pcd_compliance_predicate< FieldT > &&other)=default
 
 r1cs_pcd_compliance_predicate (const r1cs_pcd_compliance_predicate< FieldT > &other)=default
 
 r1cs_pcd_compliance_predicate (const size_t name, const size_t type, const r1cs_constraint_system< FieldT > &constraint_system, const size_t outgoing_message_payload_length, const size_t max_arity, const std::vector< size_t > &incoming_message_payload_lengths, const size_t local_data_length, const size_t witness_length, const bool relies_on_same_type_inputs, const std::set< size_t > accepted_input_types=std::set< size_t >())
 
r1cs_pcd_compliance_predicate< FieldT > & operator= (const r1cs_pcd_compliance_predicate< FieldT > &other)=default
 
bool is_well_formed () const
 
bool has_equal_input_and_output_lengths () const
 
bool has_equal_input_lengths () const
 
bool is_satisfied (const std::shared_ptr< r1cs_pcd_message< FieldT >> &outgoing_message, const std::vector< std::shared_ptr< r1cs_pcd_message< FieldT >>> &incoming_messages, const std::shared_ptr< r1cs_pcd_local_data< FieldT >> &local_data, const r1cs_pcd_witness< FieldT > &witness) const
 
bool operator== (const r1cs_pcd_compliance_predicate< FieldT > &other) const
 

Public Attributes

size_t name
 
size_t type
 
r1cs_constraint_system< FieldT > constraint_system
 
size_t outgoing_message_payload_length
 
size_t max_arity
 
std::vector< size_t > incoming_message_payload_lengths
 
size_t local_data_length
 
size_t witness_length
 
bool relies_on_same_type_inputs
 
std::set< size_t > accepted_input_types
 

Friends

std::ostream & operator (std::ostream &out, const r1cs_pcd_compliance_predicate< FieldT > &cp)
 
std::istream & operator>> (std::istream &in, r1cs_pcd_compliance_predicate< FieldT > &cp)
 

Detailed Description

template<typename FieldT>
class libsnark::r1cs_pcd_compliance_predicate< FieldT >

A compliance predicate for R1CS PCD.

It is a wrapper around R1CS that also specifies how to parse a variable assignment as:

A compliance predicate also has a type, allegedly the same as the type of the output message.

The input wires of R1CS appear in the following order:

The rest witness_length wires of the R1CS constitute the witness.

To allow for optimizations, the compliance predicate also specififies a flag, called relies_on_same_type_inputs, denoting whether the predicate works under the assumption that all input messages have the same type. In such case a member accepted_input_types lists all types accepted by the predicate (accepted_input_types has no meaning if relies_on_same_type_inputs=false).

Definition at line 69 of file compliance_predicate.hpp.

Constructor & Destructor Documentation

◆ r1cs_pcd_compliance_predicate() [1/4]

template<typename FieldT >
libsnark::r1cs_pcd_compliance_predicate< FieldT >::r1cs_pcd_compliance_predicate ( )
default

◆ r1cs_pcd_compliance_predicate() [2/4]

template<typename FieldT >
libsnark::r1cs_pcd_compliance_predicate< FieldT >::r1cs_pcd_compliance_predicate ( r1cs_pcd_compliance_predicate< FieldT > &&  other)
default

◆ r1cs_pcd_compliance_predicate() [3/4]

template<typename FieldT >
libsnark::r1cs_pcd_compliance_predicate< FieldT >::r1cs_pcd_compliance_predicate ( const r1cs_pcd_compliance_predicate< FieldT > &  other)
default

◆ r1cs_pcd_compliance_predicate() [4/4]

template<typename FieldT >
libsnark::r1cs_pcd_compliance_predicate< FieldT >::r1cs_pcd_compliance_predicate ( const size_t  name,
const size_t  type,
const r1cs_constraint_system< FieldT > &  constraint_system,
const size_t  outgoing_message_payload_length,
const size_t  max_arity,
const std::vector< size_t > &  incoming_message_payload_lengths,
const size_t  local_data_length,
const size_t  witness_length,
const bool  relies_on_same_type_inputs,
const std::set< size_t >  accepted_input_types = std::set< size_t >() 
)

Member Function Documentation

◆ has_equal_input_and_output_lengths()

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::has_equal_input_and_output_lengths ( ) const

◆ has_equal_input_lengths()

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::has_equal_input_lengths ( ) const

◆ is_satisfied()

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::is_satisfied ( const std::shared_ptr< r1cs_pcd_message< FieldT >> &  outgoing_message,
const std::vector< std::shared_ptr< r1cs_pcd_message< FieldT >>> &  incoming_messages,
const std::shared_ptr< r1cs_pcd_local_data< FieldT >> &  local_data,
const r1cs_pcd_witness< FieldT > &  witness 
) const

◆ is_well_formed()

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::is_well_formed ( ) const

◆ operator=()

template<typename FieldT >
r1cs_pcd_compliance_predicate<FieldT>& libsnark::r1cs_pcd_compliance_predicate< FieldT >::operator= ( const r1cs_pcd_compliance_predicate< FieldT > &  other)
default

◆ operator==()

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::operator== ( const r1cs_pcd_compliance_predicate< FieldT > &  other) const

Friends And Related Function Documentation

◆ operator

template<typename FieldT >
std::ostream& operator ( std::ostream &  out,
const r1cs_pcd_compliance_predicate< FieldT > &  cp 
)
friend

◆ operator>>

template<typename FieldT >
std::istream& operator>> ( std::istream &  in,
r1cs_pcd_compliance_predicate< FieldT > &  cp 
)
friend

Member Data Documentation

◆ accepted_input_types

template<typename FieldT >
std::set<size_t> libsnark::r1cs_pcd_compliance_predicate< FieldT >::accepted_input_types

Definition at line 126 of file compliance_predicate.hpp.

◆ constraint_system

template<typename FieldT >
r1cs_constraint_system<FieldT> libsnark::r1cs_pcd_compliance_predicate< FieldT >::constraint_system

Definition at line 117 of file compliance_predicate.hpp.

◆ incoming_message_payload_lengths

template<typename FieldT >
std::vector<size_t> libsnark::r1cs_pcd_compliance_predicate< FieldT >::incoming_message_payload_lengths

Definition at line 121 of file compliance_predicate.hpp.

◆ local_data_length

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::local_data_length

Definition at line 122 of file compliance_predicate.hpp.

◆ max_arity

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::max_arity

Definition at line 120 of file compliance_predicate.hpp.

◆ name

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::name

Definition at line 114 of file compliance_predicate.hpp.

◆ outgoing_message_payload_length

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::outgoing_message_payload_length

Definition at line 119 of file compliance_predicate.hpp.

◆ relies_on_same_type_inputs

template<typename FieldT >
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::relies_on_same_type_inputs

Definition at line 125 of file compliance_predicate.hpp.

◆ type

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::type

Definition at line 115 of file compliance_predicate.hpp.

◆ witness_length

template<typename FieldT >
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::witness_length

Definition at line 123 of file compliance_predicate.hpp.


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