45 lines
1.4 KiB
C++
45 lines
1.4 KiB
C++
|
#include "common/default_types/r1cs_ppzksnark_pp.hpp"
|
||
|
#include "common/profiling.hpp"
|
||
|
|
||
|
// CXXFLAGS="-fPIC -DBINARY_OUTPUT -DNO_PT_COMPRESSION=1" make lib CURVE=ALT_BN128 MULTICORE=1 NO_PROCPS=1 NO_GTEST=1 NO_DOCS=1 STATIC=1 NO_SUPERCOP=1 FEATUREFLAGS=-DMONTGOMERY_OUTPUT
|
||
|
// g++ -std=c++11 -O3 test.cpp -o test -Isrc/ -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC -L. -lsnark -lgmp -lsodium
|
||
|
|
||
|
typedef libsnark::default_r1cs_ppzksnark_pp curve_pp;
|
||
|
typedef libsnark::default_r1cs_ppzksnark_pp::G1_type curve_G1;
|
||
|
typedef libsnark::default_r1cs_ppzksnark_pp::G2_type curve_G2;
|
||
|
typedef libsnark::default_r1cs_ppzksnark_pp::GT_type curve_GT;
|
||
|
typedef libsnark::default_r1cs_ppzksnark_pp::Fp_type curve_Fr;
|
||
|
|
||
|
int main() {
|
||
|
curve_pp::init_public_params();
|
||
|
libsnark::inhibit_profiling_info = true;
|
||
|
libsnark::inhibit_profiling_counters = true;
|
||
|
|
||
|
curve_G1 a = curve_G1::one();
|
||
|
curve_G2 b = curve_G2::one();
|
||
|
|
||
|
curve_Fr c = curve_Fr("1901").inverse();
|
||
|
curve_Fr d = curve_Fr("2344").inverse();
|
||
|
|
||
|
curve_GT acc1 = curve_GT::one();
|
||
|
|
||
|
for (size_t i = 0; i < 10000; i++) {
|
||
|
acc1 = acc1 * curve_pp::reduced_pairing(a, b);
|
||
|
a = c * a;
|
||
|
b = d * b;
|
||
|
}
|
||
|
|
||
|
a = curve_G1::one();
|
||
|
b = curve_G2::one();
|
||
|
|
||
|
curve_GT acc2 = curve_GT::one();
|
||
|
|
||
|
for (size_t i = 0; i < 10000; i++) {
|
||
|
acc2 = acc2 * curve_pp::reduced_pairing(a, b);
|
||
|
a = d * a;
|
||
|
b = c * b;
|
||
|
}
|
||
|
|
||
|
assert(acc1 == acc2);
|
||
|
}
|