diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-02-03 14:36:29 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-09-11 13:37:32 +0000 |
commit | bacf0a1e2ff54ef1fc77e3f6ec92e87946084c1a (patch) | |
tree | 6d1ec247c11b7f9759dc0f169f98b5804daad1df /tests/performance_tests/bulletproof.h | |
parent | make straus cached mode thread safe, and add tests for it (diff) | |
download | monero-bacf0a1e2ff54ef1fc77e3f6ec92e87946084c1a.tar.xz |
bulletproofs: add aggregated verification
Ported from sarang's java code
Diffstat (limited to 'tests/performance_tests/bulletproof.h')
-rw-r--r-- | tests/performance_tests/bulletproof.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/performance_tests/bulletproof.h b/tests/performance_tests/bulletproof.h index b11c9fe97..7bb702c3d 100644 --- a/tests/performance_tests/bulletproof.h +++ b/tests/performance_tests/bulletproof.h @@ -60,3 +60,41 @@ public: private: rct::Bulletproof proof; }; + +template<bool batch, size_t start, size_t repeat, size_t mul, size_t add, size_t N> +class test_aggregated_bulletproof +{ +public: + static const size_t loop_count = 500 / (N * repeat); + + bool init() + { + size_t o = start; + for (size_t n = 0; n < N; ++n) + { + //printf("adding %zu times %zu\n", repeat, o); + for (size_t i = 0; i < repeat; ++i) + proofs.push_back(rct::bulletproof_PROVE(std::vector<uint64_t>(o, 749327532984), rct::skvGen(o))); + o = o * mul + add; + } + return true; + } + + bool test() + { + if (batch) + { + return rct::bulletproof_VERIFY(proofs); + } + else + { + for (const rct::Bulletproof &proof: proofs) + if (!rct::bulletproof_VERIFY(proof)) + return false; + return true; + } + } + +private: + std::vector<rct::Bulletproof> proofs; +}; |