zkMIPS 通过零知识证明(ZKP)验证 MIPS 程序的正确执行。流程包括代码编译、虚拟机运行、生成执行轨迹,并通过 STARK、PLONK 和 Groth16 等技术生成高效的可验证证明,实现链上验证与隐私保护。
在 zkVM 中,离线内存检查用于验证内存读/写的正确性,而无需每次读取时立即验证。它通过构建读集合 (RS) 和写集合 (WS),在所有操作完成后一次性检查一致性。 为此,本文提出 Multiset Hashing 和 LogUp 两种方法。
STARK到SNARK的转换从构建递归电路开始,递归电路的作用是将原本庞大的STARK证明压缩成较小的SNARK证明,具体由以下几个组件构成,包括根电路,聚合电路和区块电路。
MemoryStark确保内存访问操作是按时间和地址顺序进行的,并且读取的值与之前写入的值一致。LogicSNARK确保逻辑运算的正确性。
Poseidon的执行过程包括以下6个步骤:初始化、完整轮次计算、部分轮次计算、电路约束生成、生成多项式承诺、证明生成与验证。整个过程用于生成最终的零知识证明。
在零知识证明中,lookup操作用于验证多个表格之间的关系。首先,将多个表格的数据聚合起来形成查询条件。然后,通过lookup在目标表格中查找符合条件的记录。最后,零知识证明生成一个证明,验证查询结果的正确性,而不泄露任何具体数据。
lookup
本文介绍了一个MIPS模拟器的设计,支持MIPS ELF程序的加载、执行和段生成。模拟器通过逐步执行指令并检查退出条件,支持常规执行和段分割两种模式。内存管理采用4KB页面并通过哈希树计算镜像ID,优化了修改页面的哈希计算,提升了性能。主要数据结构包括仿真状态、内存和段信息。
ZKM Prover 结合 zk-STARK 技术,验证算术与 CPU 操作。算术操作包括加法、乘法、除法等,通过初始化算术表、生成 Trace 数据、执行范围检查与电路验证确保正确性。CPU 操作涵盖指令解码、跳转、内存访问等模块,依次通过本地与电路验证保证操作符合逻辑与约束。
ZKM Prover利用Plonky2构造零知识证明系统,其主要步骤涉及对每个Plonkish表的证明生成、聚合及压缩处理。
LookupArgument是一种重要的密码学原语,用于证明一个集合(或结构化对象,如多项式)的元素属于另一个预先计算的集合或结构。它在零知识证明系统中具有重要作用,可以在不泄露敏感信息的前提下强制验证数据的一致性和约束。