Logic to support batching opening claims for unshifted and shifted polynomials in Shplemini.
More...
|
Batch | get_unshifted () |
|
Batch | get_shifted () |
|
Batch | get_right_shifted_by_k () |
|
InterleavedBatch | get_interleaved () |
|
uint32_t | get_groups_to_be_interleaved_size () |
|
Fr | get_unshifted_batch_scalar () const |
|
void | compute_scalars_for_each_batch (std::span< const Fr > inverted_vanishing_evals, const Fr &nu_challenge, const Fr &r_challenge) |
| Compute scalars used to batch each set of claims, excluding contribution from batching challenge \rho.
|
|
void | update_batch_mul_inputs_and_batched_evaluation (std::vector< Commitment > &commitments, std::vector< Fr > &scalars, Fr &batched_evaluation, const Fr &rho, Fr &rho_power, Fr shplonk_batching_pos={ 0 }, Fr shplonk_batching_neg={ 0 }) |
| Append the commitments and scalars from each batch of claims to the Shplemini, vectors which subsequently will be inputs to the batch mul; update the batched evaluation and the running batching challenge (power of rho) in place.
|
|
template<typename
Curve>
struct bb::ClaimBatcher_< Curve >
Logic to support batching opening claims for unshifted and shifted polynomials in Shplemini.
Stores references to the commitments/evaluations of unshifted and shifted polynomials to be batched opened via Shplemini. Aggregates the commitments and batching scalars for each batch into the corresponding containers for Shplemini. Computes the batched evaluation. Contains logic for computing the per-batch scalars used to batch each set of claims (see details below).
- Note
- This class performs the actual batching of the evaluations but not of the commitments. The latter are simply appended to a larger container, along with the scalars used to batch them. This is because Shplemini is optimized to perform a single batch mul that includes all commitments from each stage of the PCS. See description of ShpleminiVerifier for more details.
Definition at line 27 of file claim_batcher.hpp.
template<typename
Curve >
void bb::ClaimBatcher_< Curve >::compute_scalars_for_each_batch |
( |
std::span< const Fr > |
inverted_vanishing_evals, |
|
|
const Fr & |
nu_challenge, |
|
|
const Fr & |
r_challenge |
|
) |
| |
|
inline |
Compute scalars used to batch each set of claims, excluding contribution from batching challenge \rho.
Computes scalars s_0, s_1, s_2 given by
\[
- s_0 = \left(\frac{1}{z-r} + \nu \times \frac{1}{z+r}\right) \]
,
- s_1 = \frac{1}{r} \times \left(\frac{1}{z-r} - \nu \times \frac{1}{z+r}\right)
- s_2 = r^{k} \times \left(\frac{1}{z-r} + \nu \times \frac{1}{z+r}\right) \f] where the scalars used to batch the claims are given by
\[
\left(
- s_0,
\ldots,
- \rho^{i+k-1} \times s_0,
- \rho^{i+k} \times s_1,
\ldots,
- \rho^{k+m-1} \times s_1
\right)
\]
- Parameters
-
inverse_vanishing_eval_pos | 1/(z-r) |
inverse_vanishing_eval_neg | 1/(z+r) |
nu_challenge | ν (shplonk batching challenge) |
r_challenge | r (gemini evaluation challenge) |
Definition at line 89 of file claim_batcher.hpp.