73 std::vector<Fr> powers;
74 powers.reserve(count);
76 for (
size_t idx = 0; idx <
offset; ++idx) {
79 for (
size_t idx = 0; idx < count; ++idx) {
80 powers.emplace_back(power);
93 template <
typename CommitmentRange,
94 typename EvaluationRange,
95 typename ShiftedCommitmentRange,
96 typename ShiftedSourceEvaluationRange,
97 typename ShiftedEvaluationRange>
99 const EvaluationRange& unshifted_evaluations,
100 const ShiftedCommitmentRange& shifted_source_commitments,
101 const ShiftedSourceEvaluationRange& shifted_source_evaluations,
102 const ShiftedEvaluationRange& shifted_evaluations,
107 const size_t num_unshifted = unshifted_commitments.size();
108 BB_ASSERT_EQ(num_unshifted, unshifted_evaluations.size());
109 const size_t num_shifted = shifted_evaluations.size();
110 BB_ASSERT_EQ(num_shifted, shifted_source_commitments.size());
111 BB_ASSERT_EQ(num_shifted, shifted_source_evaluations.size());
115 data.unshifted.commitments.reserve(num_unshifted);
116 data.unshifted.evaluations.reserve(num_unshifted);
117 for (
size_t idx = 0; idx < num_unshifted; ++idx) {
118 data.unshifted.commitments.emplace_back(unshifted_commitments[idx]);
119 data.unshifted.evaluations.emplace_back(unshifted_evaluations[idx]);
123 data.shifted.commitments.reserve(num_shifted);
124 data.shifted.source_unshifted_evaluations.reserve(num_shifted);
125 data.shifted.shifted_evaluations.reserve(num_shifted);
126 for (
size_t idx = 0; idx < num_shifted; ++idx) {
127 data.shifted.commitments.emplace_back(shifted_source_commitments[idx]);
128 data.shifted.source_unshifted_evaluations.emplace_back(shifted_source_evaluations[idx]);
129 data.shifted.shifted_evaluations.emplace_back(shifted_evaluations[idx]);
131 data.shifted.rho_powers =
rho_powers(rho, num_shifted, num_unshifted);
#define BB_ASSERT_EQ(actual, expected,...)
Unverified claim (C,r,v) for some witness polynomial p(X) such that.
typename Group::affine_element AffineElement
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::vector< Fr > source_unshifted_evaluations
std::vector< Fr > shifted_evaluations
std::vector< Commitment > commitments
std::vector< Fr > rho_powers
std::vector< Commitment > commitments
std::vector< Fr > multilinear_challenge
std::vector< Fr > evaluations
std::vector< Fr > rho_powers
Pre-batch verifier-side claim data: per-polynomial commitments/evaluations before Stage-1 rho-batchin...
typename Curve::AffineElement Commitment
OpeningClaim< Curve > univariate
static TripleIpaClaimData create(const CommitmentRange &unshifted_commitments, const EvaluationRange &unshifted_evaluations, const ShiftedCommitmentRange &shifted_source_commitments, const ShiftedSourceEvaluationRange &shifted_source_evaluations, const ShiftedEvaluationRange &shifted_evaluations, std::span< const Fr > multilinear_challenge, const Fr &rho, const OpeningClaim< Curve > &univariate)
Build the claim data shared by the ECCVM prover and verifier.
static std::vector< Fr > rho_powers(const Fr &rho, size_t count, size_t offset=0)
Consecutive powers rho^offset, ..., rho^{offset + count - 1}.
typename Curve::ScalarField Fr
TripleIpaClaim< Curve > batch() const
Stage-1 rho-batching: collapse the per-polynomial data into the compact three-claim statement.
The compact TripleIPA opening claim: the statement that crosses verifier boundaries.
typename Curve::ScalarField Fr
std::vector< Fr > multilinear_challenge
Commitment unshifted_commitment
Commitment shifted_commitment
OpeningClaim< Curve > univariate
typename Curve::AffineElement Commitment
static constexpr field one()
static constexpr field zero()