#include <uscs_to_ssp.hpp>
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
typedef FieldType nil::crypto3::zk::snark::reductions::uscs_to_ssp< FieldType >::field_type |
Member Function Documentation
◆ instance_map()
|
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()
|
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()
|
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: