4#include <benchmark/benchmark.h>
6using namespace benchmark;
14constexpr size_t MIN_POLYNOMIAL_DEGREE_LOG2 = 10;
15constexpr size_t MAX_POLYNOMIAL_DEGREE_LOG2 = 16;
20 MIN_POLYNOMIAL_DEGREE_LOG2 + 1);
22static void DoSetup(
const benchmark::State&)
29void ipa_open(State& state)
noexcept
32 for (
auto _ : state) {
34 size_t n = 1 <<
static_cast<size_t>(state.range(0));
37 for (
size_t i = 0; i < n; ++i) {
41 auto eval = poly.evaluate(x);
50 prover_transcripts[
static_cast<size_t>(state.range(0)) - MIN_POLYNOMIAL_DEGREE_LOG2] = prover_transcript;
51 opening_claims[
static_cast<size_t>(state.range(0)) - MIN_POLYNOMIAL_DEGREE_LOG2] = opening_claim;
54void ipa_verify(State& state)
noexcept
56 for (
auto _ : state) {
59 auto prover_transcript = prover_transcripts[
static_cast<size_t>(state.range(0)) - MIN_POLYNOMIAL_DEGREE_LOG2];
60 auto opening_claim = opening_claims[
static_cast<size_t>(state.range(0)) - MIN_POLYNOMIAL_DEGREE_LOG2];
77static void DoBatchSetup(
const benchmark::State&)
81 static bool initialized =
false;
92 for (
size_t j = 0; j < BENCH_POLY_LENGTH; j++) {
96 auto eval = poly.evaluate(x);
97 batch_claim = { { x, eval },
ck.commit(poly) };
101 batch_proof_data_single = pt->export_proof();
107void ipa_verify_individual(State& state)
noexcept
109 const size_t num_proofs =
static_cast<size_t>(state.range(0));
110 for (
auto _ : state) {
114 for (
size_t i = 0; i < num_proofs; i++) {
117 state.ResumeTiming();
119 for (
size_t i = 0; i < num_proofs; i++) {
129void ipa_batch_verify(State& state)
noexcept
131 const size_t num_proofs =
static_cast<size_t>(state.range(0));
132 for (
auto _ : state) {
136 for (
size_t i = 0; i < num_proofs; i++) {
139 state.ResumeTiming();
149 ->DenseRange(MIN_POLYNOMIAL_DEGREE_LOG2, MAX_POLYNOMIAL_DEGREE_LOG2)
153 ->DenseRange(MIN_POLYNOMIAL_DEGREE_LOG2, MAX_POLYNOMIAL_DEGREE_LOG2)
155BENCHMARK(ipa_verify_individual)->Unit(kMillisecond)->Arg(1)->Arg(2)->Arg(4)->Arg(8)->Setup(DoBatchSetup);
156BENCHMARK(ipa_batch_verify)->Unit(kMillisecond)->Arg(1)->Arg(2)->Arg(4)->Arg(8)->Setup(DoBatchSetup);
#define BB_ASSERT(expression,...)
CommitmentKey object over a pairing group 𝔾₁.
IPA (inner product argument) commitment scheme class.
Unverified claim (C,r,v) for some witness polynomial p(X) such that.
Opening pair (r,v) for some witness polynomial p(X) such that p(r) = v.
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
Representation of the Grumpkin Verifier Commitment Key inside a bn254 circuit.
BENCHMARK(ipa_verify_individual) -> Unit(kMillisecond) ->Arg(1) ->Arg(2) ->Arg(4) ->Arg(8) ->Setup(DoBatchSetup)
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
std::shared_ptr< factories::CrsFactory< curve::Grumpkin > > get_grumpkin_crs_factory()
Entry point for Barretenberg command-line interface.
std::vector< fr > HonkProof
CommitmentKey< Curve > ck
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept