Skip to content

Commit

Permalink
Some tests fixed #335
Browse files Browse the repository at this point in the history
  • Loading branch information
ETatuzova committed Apr 10, 2024
2 parents 45fe773 + a117fa7 commit 945792b
Show file tree
Hide file tree
Showing 17 changed files with 172 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,6 @@ namespace nil {
const typename plonk_ed25519_addition<BlueprintFieldType>::input_type
&instance_input,
const std::size_t start_row_index) {

std::size_t selector_index = generate_gates(component, bp, assignment, instance_input);

std::size_t j = start_row_index;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,10 +263,10 @@ namespace nil {
using var = typename plonk_ed25519_range<BlueprintFieldType>::var;

std::size_t row = start_row_index;
bp.add_copy_constraint({var(component.W(0), static_cast<int>(row), false), instance_input.input[0]});
bp.add_copy_constraint({var(component.W(1), static_cast<int>(row), false), instance_input.input[1]});
bp.add_copy_constraint({var(component.W(2), static_cast<int>(row), false), instance_input.input[2]});
bp.add_copy_constraint({var(component.W(3), static_cast<int>(row), false), instance_input.input[3]});
if(var(component.W(0), static_cast<int>(row), false) != instance_input.input[0]) bp.add_copy_constraint({var(component.W(0), static_cast<int>(row), false), instance_input.input[0]});
if(var(component.W(1), static_cast<int>(row), false) != instance_input.input[1]) bp.add_copy_constraint({var(component.W(1), static_cast<int>(row), false), instance_input.input[1]});
if(var(component.W(2), static_cast<int>(row), false) != instance_input.input[2]) bp.add_copy_constraint({var(component.W(2), static_cast<int>(row), false), instance_input.input[2]});
if(var(component.W(3), static_cast<int>(row), false) != instance_input.input[3]) bp.add_copy_constraint({var(component.W(3), static_cast<int>(row), false), instance_input.input[3]});
}

template<typename BlueprintFieldType>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ namespace nil {
// Proceed with care
using var = typename plonk_poseidon<BlueprintFieldType, FieldType>::var;
for (std::size_t i = 0; i < 3; i++) {
bp.add_copy_constraint({var(component.W(i), start_row_index), instance_input.input_state[i]});
bp.add_copy_constraint({var(component.W(i), start_row_index, false), instance_input.input_state[i]});
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,20 +246,20 @@ namespace nil {
std::size_t gate_id = 0;
for (std::size_t round = 0; round < component_type::rounds_amount; round++) {
if(start_column == 0) constraints.push_back(std::vector<constraint_type>());
var input_var1 = var(component.W(start_column), 0);
var input_var2 = var(component.W(start_column+1), 0);
var input_var3 = var(component.W(start_column+2), 0);
var input_var1 = var(component.W(start_column), 0, true);
var input_var2 = var(component.W(start_column+1), 0, true);
var input_var3 = var(component.W(start_column+2), 0, true);
var output_var1;
var output_var2;
var output_var3;
if( start_column + 5 < component.witness_amount() ){
output_var1 = var(component.W(start_column+3), 0);
output_var2 = var(component.W(start_column+4), 0);
output_var3 = var(component.W(start_column+5), 0);
output_var1 = var(component.W(start_column+3), 0, true);
output_var2 = var(component.W(start_column+4), 0, true);
output_var3 = var(component.W(start_column+5), 0, true);
} else {
output_var1 = var(component.W(0), 1);
output_var2 = var(component.W(1), 1);
output_var3 = var(component.W(2), 1);
output_var1 = var(component.W(0), 1, true);
output_var2 = var(component.W(1), 1, true);
output_var3 = var(component.W(2), 1, true);
}
auto constraint1 =
output_var1 -
Expand Down Expand Up @@ -311,7 +311,7 @@ namespace nil {
// Proceed with care
using var = typename plonk_flexible_poseidon<BlueprintFieldType>::var;
for (std::size_t i = 0; i < 3; i++) {
bp.add_copy_constraint({var(component.W(i), start_row_index), instance_input.input_state[i]});
bp.add_copy_constraint({var(component.W(i), start_row_index, false), instance_input.input_state[i]});
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ namespace nil {
placeholder_info = nil::crypto3::zk::snark::prepare_placeholder_info<typename PlaceholderParams::placeholder_params>(
constraint_system,
common_data, fri_params,
PlaceholderParams::WitnessColumns + PlaceholderParams::PublicInputColumns + PlaceholderParams::ComponentConstantColumns
constraint_system.permuted_columns().size()
);

fill_vector();
Expand Down Expand Up @@ -105,6 +105,8 @@ namespace nil {
std::vector<std::vector<var>> _round_proof_hashes;

void fill_vector() {
auto &desc = common_data.desc;

std::size_t cur = 0;
_commitments.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(_commitments[0]);
Expand All @@ -126,43 +128,52 @@ namespace nil {
// Z-s
// Fixed values batch.
// Permutation polynomials
for(std::size_t i = 0; i < placeholder_info.permutation_size * 4; i++){
std::cout << "placeholder_info.permutation_size = " << constraint_system.permuted_columns().size() << std::endl;
for(auto &column: constraint_system.permuted_columns()){
std::cout << "Permuted column " << column << std::endl;
}
std::size_t permutation_size = constraint_system.permuted_columns().size();
std::size_t points_num = 0;
for(std::size_t i = 0; i < permutation_size * 2; i++){
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num++;
}
// Special selectors
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num += 4;
//Constant columns
for( std::size_t i = 0; i < PlaceholderParams::ConstantColumns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[PlaceholderParams::WitnessColumns + PlaceholderParams::PublicInputColumns + i].size(); j++){
for( std::size_t i = 0; i < desc.constant_columns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[desc.witness_columns + desc.public_input_columns + i].size(); j++){
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num++;
}
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
}
//Selector columns
for( std::size_t i = 0; i < PlaceholderParams::SelectorColumns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[PlaceholderParams::WitnessColumns + PlaceholderParams::PublicInputColumns + PlaceholderParams::ConstantColumns + i].size(); j++){
for( std::size_t i = 0; i < desc.selector_columns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[desc.witness_columns + desc.public_input_columns + desc.public_input_columns + i].size(); j++){
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num++;
}
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
}
//Variable values
//Witness columns
for( std::size_t i = 0; i < PlaceholderParams::WitnessColumns; i++){
for( std::size_t i = 0; i < desc.witness_columns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[i].size(); j++){
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num++;
}
}
//Public input columns
for( std::size_t i = 0; i < PlaceholderParams::PublicInputColumns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[i + PlaceholderParams::WitnessColumns].size(); j++){
for( std::size_t i = 0; i < desc.public_input_columns; i++){
for( std::size_t j = 0; j < common_data.columns_rotations[i + desc.witness_columns].size(); j++){
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
points_num++;
}
}
std::cout << "Proof input points num = " << points_num << std::endl;
//Permutation Polynomials
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
var_vector.push_back(var(0, cur++, false, var::column_type::public_input));
Expand Down Expand Up @@ -190,13 +201,13 @@ namespace nil {
}

// Query proofs
_merkle_tree_positions.resize(PlaceholderParams::Lambda);
_initial_proof_values.resize(PlaceholderParams::Lambda);
_initial_proof_hashes.resize(PlaceholderParams::Lambda);
_round_proof_values.resize(PlaceholderParams::Lambda);
_round_proof_hashes.resize(PlaceholderParams::Lambda);
_merkle_tree_positions.resize(fri_params.lambda);
_initial_proof_values.resize(fri_params.lambda);
_initial_proof_hashes.resize(fri_params.lambda);
_round_proof_values.resize(fri_params.lambda);
_round_proof_hashes.resize(fri_params.lambda);
std::cout << "Poly input num = " << placeholder_info.poly_num << std::endl;
for( std::size_t i = 0; i < PlaceholderParams::Lambda; i++){
for( std::size_t i = 0; i < fri_params.lambda; i++){
// Initial proof values
_initial_proof_values[i] = {};
for( std::size_t j = 0; j < placeholder_info.poly_num; j++ ){
Expand Down Expand Up @@ -243,10 +254,10 @@ namespace nil {
}
}
private:
common_data_type common_data;
constraint_system_type constraint_system;
const common_data_type &common_data;
const constraint_system_type &constraint_system;
std::vector<var> var_vector;
typename PlaceholderParams::fri_params_type fri_params;
const typename PlaceholderParams::fri_params_type &fri_params;
placeholder_info_type placeholder_info;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,20 @@ namespace nil {
auto batch_info = eval_proof.z.get_batch_info();
std::size_t sum = 0;
std::size_t poly_num = 0;
std::size_t points_num = 0;
for(const auto& [k, v]: batch_info){
std::cout << "Batch info: " << k << " " << v << std::endl;
for(std::size_t i = 0; i < v; i++){
poly_num++;
BOOST_ASSERT(eval_proof.z.get_poly_points_number(k, i) != 0);
for(std::size_t j = 0; j < eval_proof.z.get_poly_points_number(k, i); j++){
points_num++;
_proof_field_vector.push_back(eval_proof.z.get(k, i, j));
}
}
}
std::cout << "Proof wrapper poly num: " << poly_num << std::endl;
std::cout << "Proof wrapper points num: " << points_num << std::endl;

for( std::size_t i = 0; i < eval_proof.fri_proof.fri_roots.size(); i++){
_proof_field_vector.push_back(eval_proof.fri_proof.fri_roots[i]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include <nil/crypto3/zk/snark/arithmetization/plonk/constraint_system.hpp>
#include <nil/crypto3/zk/snark/systems/plonk/placeholder/preprocessor.hpp>
#include <nil/crypto3/zk/snark/systems/plonk/placeholder/proof.hpp>
#include <nil/crypto3/zk/snark/systems/plonk/placeholder/profiling.hpp>
#include <nil/crypto3/zk/snark/systems/plonk/placeholder/detail/profiling.hpp>

#include <nil/blueprint/blueprint/plonk/assignment.hpp>
#include <nil/blueprint/blueprint/plonk/circuit.hpp>
Expand Down Expand Up @@ -211,16 +211,17 @@ namespace nil {
const typename SrcParams::fri_params_type &fri_params
): component_type(witnesses, constants, public_inputs, get_manifest())
{
auto &desc = common_data.desc;
placeholder_info = nil::crypto3::zk::snark::prepare_placeholder_info<typename SrcParams::placeholder_params>(
constraint_system,
common_data, fri_params,
SrcParams::WitnessColumns + SrcParams::PublicInputColumns + SrcParams::ComponentConstantColumns
constraint_system.permuted_columns().size()
);
rows_amount = 100000; // TODO: count rows carefully
vk0 = common_data.vk.constraint_system_with_params_hash;
vk1 = common_data.vk.fixed_values_commitment;
fri_params_r = fri_params.r;
fri_params_lambda = SrcParams::Lambda;
fri_params_lambda = fri_params.lambda;
fri_omega = fri_params.D[0]->get_domain_element(1);
fri_domain_size = fri_params.D[0]->size();
fri_initial_merkle_proof_size = log2(fri_params.D[0]->m) - 1;
Expand Down Expand Up @@ -431,7 +432,6 @@ namespace nil {
poseidon_rows += poseidon_instance.rows_amount;
merkle_leaf_rows += poseidon_instance.rows_amount;
}
// std::cout << "Merkle leaf " << var_value(assignment, poseidon_output.output_state[2]) << std::endl;
var hash_var = poseidon_output.output_state[2];
// std::cout << "First hash i = " << i << "; cur_hash = " << cur_hash << " = " << instance_input.initial_proof_hashes[i][cur_hash] << " = " << var_value(assignment, instance_input.initial_proof_hashes[i][cur_hash]) << std::endl;
for( std::size_t k = 0; k < component.fri_initial_merkle_proof_size; k++){
Expand Down
3 changes: 2 additions & 1 deletion include/nil/blueprint/detail/lookup_table_loaders.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@
#include <nil/blueprint/detail/lookup_table_precomputes.hpp>

#include <boost/spirit/include/qi.hpp>
#include <boost/phoenix.hpp>
#include <boost/phoenix/operator.hpp>
#include <boost/phoenix/object.hpp>

namespace nil {
namespace blueprint {
Expand Down
Loading

0 comments on commit 945792b

Please sign in to comment.