7#include <gtest/gtest.h>
11static constexpr size_t LOG_DEGREE = 4;
12static constexpr size_t MAX_POLY_DEGREE = 1UL << LOG_DEGREE;
24 for (
size_t idx = 0; idx < num_claims; idx++) {
27 auto commit = Commitment::from_witness(
builder, opening_claims[idx].commitment);
30 r.unset_free_witness_tag();
31 eval.unset_free_witness_tag();
32 commit.unset_free_witness_tag();
36 return stdlib_opening_claims;
40using BuilderTypes = ::testing::Types<UltraCircuitBuilder, MegaCircuitBuilder>;
59 auto setup = this->generate_claim_data({ MAX_POLY_DEGREE, MAX_POLY_DEGREE / 2 });
62 auto prover_opening_claims = ClaimData::prover_opening_claims(setup);
63 auto batched_prover_claim = ShplonkProver::prove(this->
ck(), prover_opening_claims, prover_transcript);
64 this->verify_opening_pair(batched_prover_claim.opening_pair, batched_prover_claim.polynomial);
68 StdlibProof stdlib_proof(
builder, prover_transcript->export_proof());
71 auto native_verifier_claims = ClaimData::verifier_opening_claims(setup);
72 auto stdlib_opening_claims =
73 this->native_to_stdlib_opening_claims(&
builder, native_verifier_claims, native_verifier_claims.size());
77 [[maybe_unused]]
auto _ = verifier_transcript->template receive_from_prover<Fr>(
"Init");
78 [[maybe_unused]]
auto batched_verifier_claim =
79 ShplonkVerifier::reduce_verification(Commitment::one(&
builder), stdlib_opening_claims, verifier_transcript);
Curve::AffineElement Commitment
std::vector< OpeningClaim< Curve > > native_to_stdlib_opening_claims(Builder *builder, std::vector< OpeningClaim< NativeCurve > > &opening_claims, const size_t num_claims)
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
static std::shared_ptr< BaseTranscript > prover_init_empty()
For testing: initializes transcript with some arbitrary data so that a challenge can be generated aft...
Commitment commit(const Polynomial &polynomial)
Unverified claim (C,r,v) for some witness polynomial p(X) such that.
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
typename Group::affine_element AffineElement
A simple wrapper around a vector of stdlib field elements representing a proof.
static field_t from_witness(Builder *ctx, const bb::fr &input)
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(ShpleminiTest, TestSettings)
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
CommitmentKey< Curve > ck
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
::testing::Types< UltraCircuitBuilder, MegaCircuitBuilder > BuilderTypes
field_t< CircuitBuilder > ScalarField