barretenberg
Loading...
Searching...
No Matches
Classes | Public Types | Static Public Member Functions | Static Public Attributes | List of all members
proof_system::ECCVMMSMMBuilder< Flavor > Class Template Reference

Classes

struct  MSMState
 

Public Types

using CycleGroup = typename Flavor::CycleGroup
 
using FF = typename Flavor::FF
 
using Element = typename CycleGroup::element
 
using AffineElement = typename CycleGroup::affine_element
 

Static Public Member Functions

static std::vector< MSMStatecompute_msm_state (const std::vector< proof_system_eccvm::MSM< CycleGroup > > &msms, std::array< std::vector< size_t >, 2 > &point_table_read_counts, const uint32_t total_number_of_muls)
 Computes the row values for the Straus MSM columns of the ECCVM.
 

Static Public Attributes

static constexpr size_t ADDITIONS_PER_ROW = proof_system_eccvm::ADDITIONS_PER_ROW
 
static constexpr size_t NUM_SCALAR_BITS = proof_system_eccvm::NUM_SCALAR_BITS
 
static constexpr size_t WNAF_SLICE_BITS = proof_system_eccvm::WNAF_SLICE_BITS
 

Member Function Documentation

◆ compute_msm_state()

template<typename Flavor >
static std::vector< MSMState > proof_system::ECCVMMSMMBuilder< Flavor >::compute_msm_state ( const std::vector< proof_system_eccvm::MSM< CycleGroup > > &  msms,
std::array< std::vector< size_t >, 2 > &  point_table_read_counts,
const uint32_t  total_number_of_muls 
)
inlinestatic

Computes the row values for the Straus MSM columns of the ECCVM.

For a detailed description of the Straus algorithm and its relation to the ECCVM, please see https://hackmd.io/@aztec-network/rJ5xhuCsn

Parameters
msms
point_table_read_counts
total_number_of_muls
Returns
std::vector<MSMState>

When computing point_table_read_counts, we need the table index that a given point belongs to. the slice value is in compressed windowed-non-adjacent-form format: A non-compressed WNAF slice is in the range: -15, -13, ..., 15 In compressed form, tney become 0, ..., 15 The point table format is the following: (for positive point table) T[0] = P, T[1] = PT, ..., T[7] = 15P (for negative point table) T[0] = -P, T[1] = -3P, ..., T[15] = -15P i.e. if the slice value is negative, we can use the compressed WNAF directly as the table index if the slice value is positive, we must take 15 - compressedWNAF to get the table index


The documentation for this class was generated from the following file: