Multi-Scalar Multiplication

The Multi-Scalar Multiplication(MSM) problem involves calculating the sum of multiple elliptic curve points, represented ad:
Here, are scalars(integers modulo a prime), are elliptic curve points. indicates that is added to itself times.
Given that about 75% of the time spent producing a zk-SNARK proof is dedicated to , optimizing this operation is essential for enhancing overall performance.

Bucket method

We can break down the Multi-Scalar Multiplication problem into smaller sums and reduce the number of operations by applying the windowing technique. Before we compute ,it's important to note that each scalar can be represented in binary. This representation allows us to express in a more efficient manner.

For each , we can segment its binary representation into windows of size :
Using this approach, we can express the scalar multiplication as:

This allows us to rewrite the MSM problem as:

By changing the order of summation, we have:

weher we first break the scalars into windows and then aggregate the points in each window. Now we can focus on efficiently calculating each

with the inner summation over considering only points with the coefficient . This leads us to organize points into the corresponding lambda buckets(if ):

We can compute this with minimal point additions using partial sums:

Each of these operations involves just one elliptic point addition. We can obtain the final result by summing these partial sums: