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

#include <r1cs_ppzkadsnark.hpp>

Collaboration diagram for libsnark::r1cs_ppzkadsnark_proof< ppT >:
Collaboration graph
[legend]

Public Member Functions

 r1cs_ppzkadsnark_proof ()
 
 r1cs_ppzkadsnark_proof (knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&g_A, knowledge_commitment< libff::G2< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&g_B, knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&g_C, libff::G1< snark_pp< ppT >> &&g_H, libff::G1< snark_pp< ppT >> &&g_K, knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&g_Aau, libff::G1< snark_pp< ppT >> &&muA)
 
size_t G1_size () const
 
size_t G2_size () const
 
size_t size_in_bits () const
 
void print_size () const
 
bool is_well_formed () const
 
bool operator== (const r1cs_ppzkadsnark_proof< ppT > &other) const
 

Public Attributes

knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_A
 
knowledge_commitment< libff::G2< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_B
 
knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_C
 
libff::G1< snark_pp< ppT > > g_H
 
libff::G1< snark_pp< ppT > > g_K
 
knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_Aau
 
libff::G1< snark_pp< ppT > > muA
 

Friends

std::ostream & operator (std::ostream &out, const r1cs_ppzkadsnark_proof< ppT > &proof)
 
std::istream & operator>> (std::istream &in, r1cs_ppzkadsnark_proof< ppT > &proof)
 

Detailed Description

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

A proof for the R1CS ppzkADSNARK.

While the proof has a structure, externally one merely opaquely produces, serializes/deserializes, and verifies proofs. We only expose some information about the structure for statistics purposes.

Definition at line 515 of file r1cs_ppzkadsnark.hpp.

Constructor & Destructor Documentation

◆ r1cs_ppzkadsnark_proof() [1/2]

template<typename ppT >
libsnark::r1cs_ppzkadsnark_proof< ppT >::r1cs_ppzkadsnark_proof ( )
inline

Definition at line 546 of file r1cs_ppzkadsnark.hpp.

547  {
548  // invalid proof with valid curve points
549  this->g_A.g = libff::G1<snark_pp<ppT>>::one();
550  this->g_A.h = libff::G1<snark_pp<ppT>>::one();
551  this->g_B.g = libff::G2<snark_pp<ppT>>::one();
552  this->g_B.h = libff::G1<snark_pp<ppT>>::one();
553  this->g_C.g = libff::G1<snark_pp<ppT>>::one();
554  this->g_C.h = libff::G1<snark_pp<ppT>>::one();
555  this->g_H = libff::G1<snark_pp<ppT>>::one();
556  this->g_K = libff::G1<snark_pp<ppT>>::one();
557  g_Aau = knowledge_commitment<
558  libff::G1<snark_pp<ppT>>,
559  libff::G1<snark_pp<ppT>>>(
560  libff::G1<snark_pp<ppT>>::one(), libff::G1<snark_pp<ppT>>::one());
561  this->muA = libff::G1<snark_pp<ppT>>::one();
562  }

◆ r1cs_ppzkadsnark_proof() [2/2]

template<typename ppT >
libsnark::r1cs_ppzkadsnark_proof< ppT >::r1cs_ppzkadsnark_proof ( knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&  g_A,
knowledge_commitment< libff::G2< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&  g_B,
knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&  g_C,
libff::G1< snark_pp< ppT >> &&  g_H,
libff::G1< snark_pp< ppT >> &&  g_K,
knowledge_commitment< libff::G1< snark_pp< ppT >>, libff::G1< snark_pp< ppT >>> &&  g_Aau,
libff::G1< snark_pp< ppT >> &&  muA 
)
inline

Definition at line 563 of file r1cs_ppzkadsnark.hpp.

575  : g_A(std::move(g_A))
576  , g_B(std::move(g_B))
577  , g_C(std::move(g_C))
578  , g_H(std::move(g_H))
579  , g_K(std::move(g_K))
580  , g_Aau(std::move(g_Aau))
581  , muA(std::move(muA)){};

Member Function Documentation

◆ G1_size()

template<typename ppT >
size_t libsnark::r1cs_ppzkadsnark_proof< ppT >::G1_size ( ) const
inline

Definition at line 583 of file r1cs_ppzkadsnark.hpp.

583 { return 10; }
Here is the caller graph for this function:

◆ G2_size()

template<typename ppT >
size_t libsnark::r1cs_ppzkadsnark_proof< ppT >::G2_size ( ) const
inline

Definition at line 585 of file r1cs_ppzkadsnark.hpp.

585 { return 1; }
Here is the caller graph for this function:

◆ is_well_formed()

template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_proof< ppT >::is_well_formed ( ) const
inline

Definition at line 603 of file r1cs_ppzkadsnark.hpp.

604  {
605  return (
606  g_A.g.is_well_formed() && g_A.h.is_well_formed() &&
607  g_B.g.is_well_formed() && g_B.h.is_well_formed() &&
608  g_C.g.is_well_formed() && g_C.h.is_well_formed() &&
609  g_H.is_well_formed() && g_K.is_well_formed() &&
610  g_Aau.g.is_well_formed() && g_Aau.h.is_well_formed() &&
611  muA.is_well_formed());
612  }

◆ operator==()

template<typename ppT >
bool libsnark::r1cs_ppzkadsnark_proof< ppT >::operator== ( const r1cs_ppzkadsnark_proof< ppT > &  other) const

◆ print_size()

template<typename ppT >
void libsnark::r1cs_ppzkadsnark_proof< ppT >::print_size ( ) const
inline

Definition at line 593 of file r1cs_ppzkadsnark.hpp.

594  {
595  libff::print_indent();
596  printf("* G1 elements in proof: %zu\n", this->G1_size());
597  libff::print_indent();
598  printf("* G2 elements in proof: %zu\n", this->G2_size());
599  libff::print_indent();
600  printf("* Proof size in bits: %zu\n", this->size_in_bits());
601  }
Here is the call graph for this function:

◆ size_in_bits()

template<typename ppT >
size_t libsnark::r1cs_ppzkadsnark_proof< ppT >::size_in_bits ( ) const
inline

Definition at line 587 of file r1cs_ppzkadsnark.hpp.

588  {
589  return G1_size() * libff::G1<snark_pp<ppT>>::size_in_bits() +
590  G2_size() * libff::G2<snark_pp<ppT>>::size_in_bits();
591  }
Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ operator

template<typename ppT >
std::ostream& operator ( std::ostream &  out,
const r1cs_ppzkadsnark_proof< ppT > &  proof 
)
friend

◆ operator>>

template<typename ppT >
std::istream& operator>> ( std::istream &  in,
r1cs_ppzkadsnark_proof< ppT > &  proof 
)
friend

Member Data Documentation

◆ g_A

template<typename ppT >
knowledge_commitment<libff::G1<snark_pp<ppT> >, libff::G1<snark_pp<ppT> > > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_A

Definition at line 535 of file r1cs_ppzkadsnark.hpp.

◆ g_Aau

template<typename ppT >
knowledge_commitment<libff::G1<snark_pp<ppT> >, libff::G1<snark_pp<ppT> > > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_Aau

Definition at line 543 of file r1cs_ppzkadsnark.hpp.

◆ g_B

template<typename ppT >
knowledge_commitment<libff::G2<snark_pp<ppT> >, libff::G1<snark_pp<ppT> > > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_B

Definition at line 537 of file r1cs_ppzkadsnark.hpp.

◆ g_C

template<typename ppT >
knowledge_commitment<libff::G1<snark_pp<ppT> >, libff::G1<snark_pp<ppT> > > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_C

Definition at line 539 of file r1cs_ppzkadsnark.hpp.

◆ g_H

template<typename ppT >
libff::G1<snark_pp<ppT> > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_H

Definition at line 540 of file r1cs_ppzkadsnark.hpp.

◆ g_K

template<typename ppT >
libff::G1<snark_pp<ppT> > libsnark::r1cs_ppzkadsnark_proof< ppT >::g_K

Definition at line 541 of file r1cs_ppzkadsnark.hpp.

◆ muA

template<typename ppT >
libff::G1<snark_pp<ppT> > libsnark::r1cs_ppzkadsnark_proof< ppT >::muA

Definition at line 544 of file r1cs_ppzkadsnark.hpp.


The documentation for this class was generated from the following file:
libsnark::r1cs_ppzkadsnark_proof::g_A
knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_A
Definition: r1cs_ppzkadsnark.hpp:535
libsnark::knowledge_commitment::g
T1 g
Definition: knowledge_commitment.hpp:36
libsnark::r1cs_ppzkadsnark_proof::g_B
knowledge_commitment< libff::G2< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_B
Definition: r1cs_ppzkadsnark.hpp:537
libsnark::r1cs_ppzkadsnark_proof::size_in_bits
size_t size_in_bits() const
Definition: r1cs_ppzkadsnark.hpp:587
libsnark::r1cs_ppzkadsnark_proof::muA
libff::G1< snark_pp< ppT > > muA
Definition: r1cs_ppzkadsnark.hpp:544
libsnark::r1cs_ppzkadsnark_proof::g_C
knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_C
Definition: r1cs_ppzkadsnark.hpp:539
libsnark::r1cs_ppzkadsnark_proof::g_Aau
knowledge_commitment< libff::G1< snark_pp< ppT > >, libff::G1< snark_pp< ppT > > > g_Aau
Definition: r1cs_ppzkadsnark.hpp:543
libsnark::r1cs_ppzkadsnark_proof::g_H
libff::G1< snark_pp< ppT > > g_H
Definition: r1cs_ppzkadsnark.hpp:540
libsnark::r1cs_ppzkadsnark_proof::G1_size
size_t G1_size() const
Definition: r1cs_ppzkadsnark.hpp:583
libsnark::knowledge_commitment::h
T2 h
Definition: knowledge_commitment.hpp:37
libsnark::r1cs_ppzkadsnark_proof::G2_size
size_t G2_size() const
Definition: r1cs_ppzkadsnark.hpp:585
libsnark::r1cs_ppzkadsnark_proof::g_K
libff::G1< snark_pp< ppT > > g_K
Definition: r1cs_ppzkadsnark.hpp:541