zkMips-验证流程 v2
作者:Ben

zkMips 是一款专为 MIPS 指令集量身定制的新型 zkVM,利用其稳定性以及在物联网和传统应用中的广泛应用。zkMips 通过在 zkVM 框架内提供高效、安全的证明生成,以及为基于 MIPS 的程序提供可验证的计算,为 zkPS 开辟了许多实际应用。本主题概述了在 zkMIPS 中执行 MIPS 程序的验证过程。

证明在 zkMIPS 中正确执行 MIPS 程序的第一步是记录执行期间的每个内部 CPU 状态。为此,程序在 Prover 端运行,并在每条指令之后记录每个 CPU 变量的值。这些值允许通过将每对后续状态与 MIPS CPU 状态转换函数进行匹配来直接验证 MIPS 程序的所有状态转换。

为了简化 zkMIPS 的证明程序并提高效率,确保状态转换函数正确性的过程分为三层:连续验证、分段验证和模块验证。每层都建立在前一个层的基础上,以创建全面的验证架构。

在延续层中,通过记录每个分段的第一个和最后一个 CPU 状态,将程序执行分成多个段(这些状态及其程序计数器足以界定在该段上运行的程序部分)。在第二层生成所有片段证明后,将在第二轮延续层中递归生成证明后续片段相互延续(第二个片段从第一个段结束的地方开始)的证明。最终,这些所谓的延续证明将所有段证明合并为整个程序跟踪的单一证明,从而确保整个执行过程正确进行。

在分段层中,分段进一步分为模块,每个模块对应于 MIPS 指令的独立子集。在这个阶段,分段轨迹实际上是被记录下来的,并分成较小的非顺序模块跟踪,交给模块进行验证。在第二轮分段验证中,将第三层生成的模块证明组合成分段证明,从而验证分段迹线准确地反映了模块轨迹。

模块层涉及使用专门的 STARK 证明独立验证每个模块。源自分段轨迹的模块轨迹用于通过分别证明该段每条指令的过渡函数来生成模块证明。该层确实是通过可靠、独立的证明来证明MIPS指令的地方,这些证明由轨迹中的状态和多项式来证明其底层指令逻辑。

分段验证器可以并行运行,包括一个验证器网络,以更快地证明整个程序。同样,延续验证器也可以并行运行,因为它们是递归执行的,将延续层的时间相对于段数缩短到一个对数。这种设置支持分布式验证,并提高了验证过程的可扩展性和效率。