Open Whisker17 opened 2 years ago
如果细分为小类的可以分为:
证明计算需要首先将其从经典程序转换为 ZK 友好格式。这可以通过手动重写代码以使用像Arkworks这样的低级库来完成,或者通过使用像Cairo或Circom这样编译成必要的原语来生成证明的领域特定语言来完成。
更昂贵和更复杂的操作会导致更长的证明生成时间。某些操作对 ZK 不友好也很常见(例如,SHA 或 Keccak 中使用的按位操作),导致在经典计算机上可能是廉价操作的证明生成时间较长。
一旦您的计算采用 ZK 友好的形式,您就可以选择一些输入并将其发送到证明系统。证明系统的共同点是都是采用 ZK 友好格式表示的计算以及一些输入并输出证明。
根据证明系统的不同,证明生成过程可能会有所不同,但瓶颈始终是:
在同时存在 FFT 和 MSM 的系统中,大约 70% 的时间生成证明花费在 MSM 上,其余时间则由 FFT 主导。
MSM 和 FFT 都很慢,但都有提高性能的方法:
简而言之:
在解决大型 MSM 和 FFT 的缓慢问题方面,我们看到的最有希望的工作是 PipeZK。在他们的论文中,作者描述了一种使用Pippenger 算法跳过重复计算来使 MSM 更便宜的方法。他们还描述了一种“展开”FFT 的方法,这样它们就可以在没有显着改组的情况下执行,由于现在可预测的内存访问模式,这可以提高硬件的速度。
Hardware Acceleration for Zero Knowledge Proofs