本文介绍了用于多标量乘法(MSM)的Pippenger算法。该算法首先将标量分割成多个窗口,然后针对每个窗口,通过桶排序的方法计算点的和,最后将各个窗口的结果进行累加以得到最终结果。文章还提供了一个参考链接,可以了解更多关于多标量乘法策略和挑战的信息。
给定
n 个标量
ki 和
n 个 EC 点
Pi, 计算
P 使得
P=∑i=0nkiPi
首先将每个标量划分为 m 个窗口,每个窗口有 w 位,则
ki=ki,0+ki,12w+...+ki,(m−1)2(m−1)w
你可以将每个标量 ki 视为一个大数,并将其表示为具有 limb 大小 w 的多精度整数。
然后我们有,
∑ikiPi=∑i∑j=0m−1ki,j2jwPi
通过重新排序求和,我们得到
∑ikiPi=∑j2jw(∑iki,jPi)=∑j2jwWj
这意味着我们可以首先计算每个窗口 Wj 的 MSM,然后通过 ∑j=0m−12jwWj 聚合结果。
接下来,让我们检查一下
Wj=∑i=0nki,jPi
因为每个窗口有 w 位,ki,j 的值范围为 [0,2w−1]。 因此,我们可以根据 ki,j 的值, 将 n 个点放入 2w 个桶中。 我们可以先计算 Wj 通过,
例如,如果 w=3 且 n=15,那么我们有 15 个点,8 个桶,这样
Wj=4P1+3P2+5P3+1P4+4P5+6P7+6P8+3P14+5P15=1P4+3(P2+P14)+4(P1+P5)+5(P3+P15)+6(P7+P8)=1B1+3B3+4B4+5B5+6B6
因此,
Wj=∑t=02w−1tBt
P=∑i=0nkiPi=∑j2jwWj
https://www.notamonadtutorial.com/multiscalar-multiplication-strategies-and-challenges/
####### tags: `msm` `zkp` `public`
- 原文链接: hackmd.io/lNOsNGikQgO0hL...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!