Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#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) |
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.
|
default |
|
default |
|
default |
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 >() |
||
) |
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::has_equal_input_and_output_lengths | ( | ) | const |
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::has_equal_input_lengths | ( | ) | const |
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 |
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::is_well_formed | ( | ) | const |
|
default |
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::operator== | ( | const r1cs_pcd_compliance_predicate< FieldT > & | other | ) | const |
|
friend |
|
friend |
std::set<size_t> libsnark::r1cs_pcd_compliance_predicate< FieldT >::accepted_input_types |
Definition at line 126 of file compliance_predicate.hpp.
r1cs_constraint_system<FieldT> libsnark::r1cs_pcd_compliance_predicate< FieldT >::constraint_system |
Definition at line 117 of file compliance_predicate.hpp.
std::vector<size_t> libsnark::r1cs_pcd_compliance_predicate< FieldT >::incoming_message_payload_lengths |
Definition at line 121 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::local_data_length |
Definition at line 122 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::max_arity |
Definition at line 120 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::name |
Definition at line 114 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::outgoing_message_payload_length |
Definition at line 119 of file compliance_predicate.hpp.
bool libsnark::r1cs_pcd_compliance_predicate< FieldT >::relies_on_same_type_inputs |
Definition at line 125 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::type |
Definition at line 115 of file compliance_predicate.hpp.
size_t libsnark::r1cs_pcd_compliance_predicate< FieldT >::witness_length |
Definition at line 123 of file compliance_predicate.hpp.