#include "config_pc.hpp" #include "merkle_tree.h" #include "Virgo.h" struct commitment{ vector> hashes_sha; vector> hashes_f; }; struct aggregation_witness{ vector> merkle_proof; vector merkle_proof_f; vector idx; vector idx_f; vector root; vector> root_sha; vector> output; vector a; int trees,proof_size; }; struct Pigeon_breakdown_pp{ }; struct poly_proof{ F r,y; vector tensor,challenge_vector; vector> collumns; vector P; vector> query_points; Virgo_proof P_open; vector paths; }; typedef struct Pigeon_breakdown_pp; typedef struct aggregation_witness aggregation_witness; typedef struct commitment commitment; typedef struct poly_proof poly_proof; //vector> query(int col, int row, vector> &matrix, __hhash_digest *mt); vector> naive_breakdown_commit(vector poly, __hhash_digest &comm, vector<__hhash_digest> &leaves); poly_proof naive_breakdown_open(vector &poly, vector> &encoded_matrix, vector x); void naive_breakdown_verify(poly_proof P, vector x); void test_naive_brakedown(unsigned long long int size); vector> Pigeon_breakdown_commit(vector poly , __hhash_digest &comm, vector<__hhash_digest> &leaves); void Pigeon_breakdown_gen(Pigeon_breakdown_pp &pp); poly_proof Pigeon_breakdown_open(vector &poly , vector> &encoded_matrix, vector x); void test_FFT_brakedown(unsigned long long int size); void test_pigeon(size_t size, int r_size); void test_pigeon_stream(int size, int r_size); void Pigeon_breakdown_commit_stream(stream_descriptor fd , __hhash_digest &comm, vector> &MT_hashes); poly_proof Pigeon_breakdown_open_stream(stream_descriptor fd, vector x); vector pigeon_brakedown_verify(poly_proof P);