nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType > Struct Template Reference

#include <uscs_to_ssp.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >:

Public Types

typedef FieldType field_type
 

Static Public Member Functions

static ssp_instance< FieldType > instance_map (const uscs_constraint_system< FieldType > &cs)
 
static ssp_instance_evaluation< FieldType > instance_map_with_evaluation (const uscs_constraint_system< FieldType > &cs, const typename FieldType::value_type &t)
 
static ssp_witness< FieldType > witness_map (const uscs_constraint_system< FieldType > &cs, const uscs_primary_input< FieldType > &primary_input, const uscs_auxiliary_input< FieldType > &auxiliary_input, const typename FieldType::value_type &d)
 

Member Typedef Documentation

◆ field_type

template<typename FieldType >
typedef FieldType nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >::field_type

Member Function Documentation

◆ instance_map()

template<typename FieldType >
static ssp_instance<FieldType> nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >::instance_map ( const uscs_constraint_system< FieldType > &  cs)
inlinestatic

Instance map for the USCS-to-SSP reduction.

Namely, given a USCS constraint system cs, construct a SSP instance for which: V := (V_0(z),V_1(z),...,V_m(z)) where m = number of variables of the SSP and each V_i is expressed in the Lagrange basis.

◆ instance_map_with_evaluation()

template<typename FieldType >
static ssp_instance_evaluation<FieldType> nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >::instance_map_with_evaluation ( const uscs_constraint_system< FieldType > &  cs,
const typename FieldType::value_type &  t 
)
inlinestatic

Instance map for the USCS-to-SSP reduction followed by evaluation of the resulting SSP instance.

Namely, given a USCS constraint system cs and a field element t, construct a SSP instance (evaluated at t) for which: Vt := (V_0(t),V_1(t),...,V_m(t)) Ht := (1,t,t^2,...,t^n) Zt := Z(t) = "vanishing polynomial of a certain set S, evaluated at t" where m = number of variables of the SSP n = degree of the SSP

◆ witness_map()

template<typename FieldType >
static ssp_witness<FieldType> nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >::witness_map ( const uscs_constraint_system< FieldType > &  cs,
const uscs_primary_input< FieldType > &  primary_input,
const uscs_auxiliary_input< FieldType > &  auxiliary_input,
const typename FieldType::value_type &  d 
)
inlinestatic

Witness map for the USCS-to-SSP reduction.

The witness map takes zero knowledge into account when d is random.

More precisely, compute the coefficients h_0,h_1,...,h_n of the polynomial H(z) := (V(z)^2-1)/Z(z) where V(z) := V_0(z) + \sum_{k=1}^{m} w_k V_k(z) + d * Z(z) Z(z) := "vanishing polynomial of set S" and m = number of variables of the SSP n = degree of the SSP

This is done as follows: (1) compute evaluations of V on S = {sigma_1,...,sigma_n} (2) compute coefficients of V (3) compute evaluations of V on T = "coset of S" (4) compute evaluation of H on T (5) compute coefficients of H (6) patch H to account for d (i.e., add coefficients of the polynomial 2*d*V(z) + d*d*Z(z) )

The code below is not as simple as the above high-level description due to some reshuffling to save space.


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